From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Removed ibus-HEAD.patch Date: Sun, 31 May 2026 02:06:47 GMT Message-ID: <178019320754.1.5954297876503881971.rpms-ibus-d6bf0e42b2c6@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: d6bf0e42b2c6515f33cd3f8dc621431b277a9fb1 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiBkNmJmMGU0MmIyYzY1MTVmMzNjZDNmOGRjNjIxNDMxYjI3N2E5 ZmIxCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTAzLTAyVDE3OjM0OjU5KzA5OjAwClN0YXRzICA6ICswLy0xMDAyMSBpbiAxIGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvZDZi ZjBlNDJiMmM2NTE1ZjMzY2QzZjhkYzYyMTQzMWIyNzdhOWZiMT9icmFuY2g9YXV0b3Rvb2wKCkxv ZzoKUmVtb3ZlZCBpYnVzLUhFQUQucGF0Y2gKCi0tLQpkaWZmIC0tZ2l0IGEvaWJ1cy1IRUFELnBh dGNoIGIvaWJ1cy1IRUFELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTgx OTcxLi4wMDAwMDAwCi0tLSBhL2lidXMtSEVBRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw MDIxICswLDAgQEAKLUZyb20gYmZlNTdkMjBlOWQzOWQ1MjQyOGU5NWU0OTNkOWFmMGJkMDM0YTgy ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTUgSmFuIDIwMTggMTQ6NDQ6MDcgKzA5MDAKLVN1 YmplY3Q6IFtQQVRDSF0gQWRkZWQgREJ1cyBmaWx0ZXJpbmcgYWdhaW5zdCBtYWx3YXJlCi0KLVRo ZSBwcm9wb3NhbCBwcmV2ZW50cyBub24tb3dlciBvZiB0aGUgR0RCdXNDb25uZWN0aW9uIGZyb20g YWNjZXNzaW5nCi1EQnVzIG1ldGhvZHMgYWdhaW5zdCBtYWxpY2lvdXMgdXNhZ2VzLgotCi1CVUc9 aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMTk1NQotCi1SZXZpZXcgVVJMOiBo dHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzM1MzgwMDQzCi0tLS0KLSBidXMvaW5wdXRj b250ZXh0LmMgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKystCi0gc3JjL2lidXNlbmdp bmUuYyAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrLQotIHNyYy9pYnVzcGFuZWxzZXJ2aWNl LmMgfCAxNCArKysrKysrKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1 cy9pbnB1dGNvbnRleHQuYwotaW5kZXggZDhiZTllM2YuLjRmMmVjYWZjIDEwMDY0NAotLS0tIGEv YnVzL2lucHV0Y29udGV4dC5jCi0rKysgYi9idXMvaW5wdXRjb250ZXh0LmMKLUBAIC0yLDcgKzIs NyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMK LSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdt YWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBUYWthbyBGdWppd2FyYSA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAxNiBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMTE0OCw2ICsxMTQ4 LDIwIEBAIF9pY19zZXRfc3Vycm91bmRpbmdfdGV4dCAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpj b250ZXh0LAotICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlIChpbnZv Y2F0aW9uLCBOVUxMKTsKLSB9Ci0gCi0rLyoKLSsgKiBTaW5jZSBJQnVzU2VydmljZSBpcyBpbmhl cml0ZWQgYnkgSUJ1c0ltcGwsIHRoaXMgbWV0aG9kIGNhbm5vdCBiZQotKyAqIGFwcGxpZWQgdG8g SUJ1c1NlcnZpY2VDbGFzcy5tZXRob2RfY2FsbCgpIGRpcmVjdGx5IGJ1dCBjYW4gYmUgaW4KLSsg KiBlYWNoIGNoaWxkIGNsYXNzLm1ldGhvZF9jYWxsKCkuCi0rICovCi0rc3RhdGljIGdib29sZWFu Ci0rYnVzX2lucHV0X2NvbnRleHRfc2VydmljZV9hdXRob3JpemVkX21ldGhvZCAoSUJ1c1NlcnZp Y2UgICAgICpzZXJ2aWNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKLSt7Ci0rICAgIGlmIChpYnVzX3Nl cnZpY2VfZ2V0X2Nvbm5lY3Rpb24gKHNlcnZpY2UpID09IGNvbm5lY3Rpb24pCi0rICAgICAgICBy ZXR1cm4gVFJVRTsKLSsgICAgcmV0dXJuIEZBTFNFOwotK30KLSsKLSAvKioKLSAgKiBidXNfaW5w dXRfY29udGV4dF9zZXJ2aWNlX21ldGhvZF9jYWxsOgotICAqCi1AQCAtMTE5Nyw2ICsxMjExLDEw IEBAIGJ1c19pbnB1dF9jb250ZXh0X3NlcnZpY2VfbWV0aG9kX2NhbGwgKElCdXNTZXJ2aWNlICAg ICAgICAgICAgKnNlcnZpY2UsCi0gICAgIH07Ci0gCi0gICAgIGdpbnQgaTsKLSsKLSsgICAgaWYg KCFidXNfaW5wdXRfY29udGV4dF9zZXJ2aWNlX2F1dGhvcml6ZWRfbWV0aG9kIChzZXJ2aWNlLCBj b25uZWN0aW9uKSkKLSsgICAgICAgIHJldHVybjsKLSsKLSAgICAgZm9yIChpID0gMDsgaSA8IEdf Tl9FTEVNRU5UUyAobWV0aG9kcyk7IGkrKykgewotICAgICAgICAgaWYgKGdfc3RyY21wMCAobWV0 aG9kX25hbWUsIG1ldGhvZHNbaV0ubWV0aG9kX25hbWUpID09IDApIHsKLSAgICAgICAgICAgICBt ZXRob2RzW2ldLm1ldGhvZF9jYWxsYmFjayAoKEJ1c0lucHV0Q29udGV4dCAqKXNlcnZpY2UsIHBh cmFtZXRlcnMsIGludm9jYXRpb24pOwotQEAgLTEyNzAsNiArMTI4OCw5IEBAIGJ1c19pbnB1dF9j b250ZXh0X3NlcnZpY2Vfc2V0X3Byb3BlcnR5IChJQnVzU2VydmljZSAgICAgKnNlcnZpY2UsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKLSAgICAgfQotIAotKyAg ICBpZiAoIWJ1c19pbnB1dF9jb250ZXh0X3NlcnZpY2VfYXV0aG9yaXplZF9tZXRob2QgKHNlcnZp Y2UsIGNvbm5lY3Rpb24pKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKwotICAgICBpZiAoZ19z dHJjbXAwIChwcm9wZXJ0eV9uYW1lLCAiQ29udGVudFR5cGUiKSA9PSAwKSB7Ci0gICAgICAgICBC dXNJbnB1dENvbnRleHQgKmNvbnRleHQgPSAoQnVzSW5wdXRDb250ZXh0ICopIHNlcnZpY2U7Ci0g ICAgICAgICBfaWNfc2V0X2NvbnRlbnRfdHlwZSAoY29udGV4dCwgdmFsdWUpOwotQEAgLTEyNzks NiArMTMwMCw3IEBAIGJ1c19pbnB1dF9jb250ZXh0X3NlcnZpY2Vfc2V0X3Byb3BlcnR5IChJQnVz U2VydmljZSAgICAgKnNlcnZpY2UsCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkIChGQUxT RSk7Ci0gfQotIAotKwotIGdib29sZWFuCi0gYnVzX2lucHV0X2NvbnRleHRfaGFzX2ZvY3VzIChC dXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gewotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5l LmMgYi9zcmMvaWJ1c2VuZ2luZS5jCi1pbmRleCBiMmE4MDIyYS4uZGE2NDhkMTEgMTAwNjQ0Ci0t LS0gYS9zcmMvaWJ1c2VuZ2luZS5jCi0rKysgYi9zcmMvaWJ1c2VuZ2luZS5jCi1AQCAtMiw3ICsy LDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVz Ci0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0Bn bWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhhdCwgSW5jLgotKyAq IENvcHlyaWdodCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAg KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotQEAgLTg1MSw2ICs4NTIsMTUgQEAgaWJ1c19lbmdpbmVfZ2V0X3Byb3Bl cnR5IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgIH0KLSB9Ci0gCi0rc3RhdGljIGdib29sZWFu Ci0raWJ1c19lbmdpbmVfc2VydmljZV9hdXRob3JpemVkX21ldGhvZCAoSUJ1c1NlcnZpY2UgICAg ICpzZXJ2aWNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVz Q29ubmVjdGlvbiAqY29ubmVjdGlvbikKLSt7Ci0rICAgIGlmIChpYnVzX3NlcnZpY2VfZ2V0X2Nv bm5lY3Rpb24gKHNlcnZpY2UpID09IGNvbm5lY3Rpb24pCi0rICAgICAgICByZXR1cm4gVFJVRTsK LSsgICAgcmV0dXJuIEZBTFNFOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3Nl cnZpY2VfbWV0aG9kX2NhbGwgKElCdXNTZXJ2aWNlICAgICAgICAgICAqc2VydmljZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c0Nvbm5lY3Rpb24gICAgICAgKmNvbm5l Y3Rpb24sCi1AQCAtODc2LDYgKzg4Niw5IEBAIGlidXNfZW5naW5lX3NlcnZpY2VfbWV0aG9kX2Nh bGwgKElCdXNTZXJ2aWNlICAgICAgICAgICAqc2VydmljZSwKLSAgICAgICAgIHJldHVybjsKLSAg ICAgfQotIAotKyAgICBpZiAoIWlidXNfZW5naW5lX3NlcnZpY2VfYXV0aG9yaXplZF9tZXRob2Qg KHNlcnZpY2UsIGNvbm5lY3Rpb24pKQotKyAgICAgICAgcmV0dXJuOwotKwotICAgICBpZiAoZ19z dHJjbXAwIChtZXRob2RfbmFtZSwgIlByb2Nlc3NLZXlFdmVudCIpID09IDApIHsKLSAgICAgICAg IGd1aW50IGtleXZhbCwga2V5Y29kZSwgc3RhdGU7Ci0gICAgICAgICBnYm9vbGVhbiByZXR2YWwg PSBGQUxTRTsKLUBAIC0xMDg1LDYgKzEwOTgsOSBAQCBpYnVzX2VuZ2luZV9zZXJ2aWNlX3NldF9w cm9wZXJ0eSAoSUJ1c1NlcnZpY2UgICAgICAgICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnJvcik7Ci0gICAgIH0KLSAKLSsgICAgaWYgKCFpYnVzX2VuZ2lu ZV9zZXJ2aWNlX2F1dGhvcml6ZWRfbWV0aG9kIChzZXJ2aWNlLCBjb25uZWN0aW9uKSkKLSsgICAg ICAgIHJldHVybiBGQUxTRTsKLSsKLSAgICAgaWYgKGdfc3RyY21wMCAocHJvcGVydHlfbmFtZSwg IkNvbnRlbnRUeXBlIikgPT0gMCkgewotICAgICAgICAgZ3VpbnQgcHVycG9zZSA9IDA7Ci0gICAg ICAgICBndWludCBoaW50cyA9IDA7Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNwYW5lbHNlcnZpY2Uu YyBiL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKLWluZGV4IDQ2OGFhMzI0Li4zMzk0OWZhMSAxMDA2 NDQKLS0tLSBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKLSsrKyBiL3NyYy9pYnVzcGFuZWxzZXJ2 aWNlLmMKLUBAIC0zLDcgKzMsNyBAQAotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29w eXJpZ2h0IChjKSAyMDA5LTIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAg KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWls LmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAg LTkzNiw2ICs5MzYsMTUgQEAgX2dfb2JqZWN0X3VucmVmX2lmX2Zsb2F0aW5nIChncG9pbnRlciBp bnN0YW5jZSkKLSAgICAgICAgIGdfb2JqZWN0X3VucmVmIChpbnN0YW5jZSk7Ci0gfQotIAotK3N0 YXRpYyBnYm9vbGVhbgotK2lidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX2F1dGhvcml6ZWRfbWV0 aG9kIChJQnVzU2VydmljZSAgICAgKnNlcnZpY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKLSt7Ci0r ICAgIGlmIChpYnVzX3NlcnZpY2VfZ2V0X2Nvbm5lY3Rpb24gKHNlcnZpY2UpID09IGNvbm5lY3Rp b24pCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgcmV0dXJuIEZBTFNFOwotK30KLSsKLSBz dGF0aWMgdm9pZAotIGlidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVz U2VydmljZSAgICAgICAgICAgKnNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAgICAgICAqY29ubmVjdGlvbiwKLUBAIC05NjEs NiArOTcwLDkgQEAgaWJ1c19wYW5lbF9zZXJ2aWNlX3NlcnZpY2VfbWV0aG9kX2NhbGwgKElCdXNT ZXJ2aWNlICAgICAgICAgICAqc2VydmljZSwKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAot KyAgICBpZiAoIWlidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX2F1dGhvcml6ZWRfbWV0aG9kIChz ZXJ2aWNlLCBjb25uZWN0aW9uKSkKLSsgICAgICAgIHJldHVybjsKLSsKLSAgICAgaWYgKGdfc3Ry Y21wMCAobWV0aG9kX25hbWUsICJVcGRhdGVQcmVlZGl0VGV4dCIpID09IDApIHsKLSAgICAgICAg IEdWYXJpYW50ICp2YXJpYW50ID0gTlVMTDsKLSAgICAgICAgIGd1aW50IGN1cnNvciA9IDA7Ci0t LSAKLTIuMTQuMwotCi1Gcm9tIGUxN2M5OTg1OWQwNmFiNzUzMjY3MzBlNDUwNzJlMTA2MWY3ZDg3 YzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI5IEphbiAyMDE4IDE2OjUwOjA3ICswOTAwCi1T dWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVudCBVbmljb2RlIGNob2ljZSBvbiBFbW9qaWVyCi0KLUJV Rz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8xOTIyCi0KLVJldmlldyBVUkw6 IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zNDAxOTAwNDMKLS0tLQotIGNvbmZpZ3Vy ZS5hYyAgICAgICAgICAgICAgfCAgIDQxICstCi0gcG8vUE9URklMRVMuaW4gICAgICAgICAgICB8 ICAgIDEgKwotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgfCAgIDU1ICsrLQotIHNyYy9lbW9q aS1wYXJzZXIuYyAgICAgICAgfCAgICAzICstCi0gc3JjL2lidXMuaCAgICAgICAgICAgICAgICB8 ICAgIDQgKy0KLSBzcmMvaWJ1c3VuaWNvZGUuYyAgICAgICAgIHwgMTA2OSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9pYnVzdW5pY29kZS5oICAgICAgICAg fCAgMjk5ICsrKysrKysrKysrKwotIHNyYy9pYnVzdW5pY29kZWdlbi5oICAgICAgfCAxMTUxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy91bmljb2Rl LXBhcnNlci5jICAgICAgfCAgNTAyICsrKysrKysrKysrKysrKysrKysrCi0gdWkvZ3RrMy9lbW9q aWVyLnZhbGEgICAgICB8ICA1NTAgKysrKysrKysrKysrKysrKysrKy0tLQotIHVpL2d0azMvZW1v amllcmFwcC52YWxhICAgfCAgICAyICsKLSB1aS9ndGszL2lidXNlbW9qaWRpYWxvZy5oIHwgICAg OSArLQotIHVpL2d0azMvcGFuZWwudmFsYSAgICAgICAgfCAgICAzICstCi0gMTMgZmlsZXMgY2hh bmdlZCwgMzYxMyBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2lidXN1bmljb2RlLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXN1bmlj b2RlLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXN1bmljb2RlZ2VuLmgKLSBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3VuaWNvZGUtcGFyc2VyLmMKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDc4OTMyOGUuLmJkNDEwNjliIDEwMDY0NAotLS0t IGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zLDggKzMsOCBAQAotICMg aWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBQZW5n IEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAxNS0y MDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotLSMgQ29weXJp Z2h0IChjKSAyMDA3LTIwMTcgUmVkIEhhdCwgSW5jLgotKyMgQ29weXJpZ2h0IChjKSAyMDE1LTIw MTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5cmln aHQgKGMpIDIwMDctMjAxOCBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTY1 Myw2ICs2NTMsNDEgQEAgaHR0cHM6Ly9naXRodWIuY29tL2Z1aml3YXJhdC9jbGRyLWVtb2ppLWFu bm90YXRpb24pCi0gICAgIGVuYWJsZV9lbW9qaV9kaWN0PSJ5ZXMgKGVuYWJsZWQsIHVzZSAtLWRp c2FibGUtZW1vamktZGljdCB0byBkaXNhYmxlKSIKLSBmaQotIAotKyMgLS1kaXNhYmxlLXVuaWNv ZGUtZGljdCBvcHRpb24uCi0rQUNfQVJHX0VOQUJMRSh1bmljb2RlLWRpY3QsCi0rICAgIEFTX0hF TFBfU1RSSU5HKFstLWRpc2FibGUtdW5pY29kZS1kaWN0XSwKLSsgICAgICAgICAgICAgICAgICAg W0RvIG5vdCBidWlsZCBVbmljb2RlIGRpY3QgZmlsZXNdKSwKLSsgICAgW2VuYWJsZV91bmljb2Rl X2RpY3Q9JGVuYWJsZXZhbF0sCi0rICAgIFtlbmFibGVfdW5pY29kZV9kaWN0PXllc10KLSspCi0r QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9VTklDT0RFX0RJQ1RdLCBbdGVzdCB4IiRlbmFibGVfdW5p Y29kZV9kaWN0IiA9IHgieWVzIl0pCi0rCi0rQUNfQVJHX1dJVEgodWNkLWRpciwKLSsgICAgQVNf SEVMUF9TVFJJTkcoWy0td2l0aC11Y2QtZGlyWz1ESVJdXSwKLSsgICAgICAgIFtTZXQgdGhlIGRp cmVjdG9yeSBvZiBVQ0QgKFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlKSBmaWxlcy4KLSsgICAg ICAgICAoZGVmYXVsdDogIi91c3Ivc2hhcmUvdW5pY29kZS91Y2QiKV0pLAotKyAgICBVQ0RfRElS PSR3aXRoX2Vtb2ppX2Fubm90YXRpb25fZGlyLAotKyAgICBVQ0RfRElSPSIvdXNyL3NoYXJlL3Vu aWNvZGUvdWNkIgotKykKLStBQ19TVUJTVChVQ0RfRElSKQotKwotK2lmIHRlc3QgeCIkZW5hYmxl X3VuaWNvZGVfZGljdCIgPSB4InllcyI7IHRoZW4KLSsgICAgaWYgdGVzdCAhIC1mICRVQ0RfRElS L05hbWVzTGlzdC50eHQgOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoTm90IGZvdW5kICRV Q0RfRElSL05hbWVzTGlzdC50eHQuIFlvdSBjYW4gZ2V0IFwKLSt0aGUgVUNEIGZpbGVzIGZyb20g aHR0cHM6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL1VOSURBVEEvKQotKyAgICBlbGlmIHRlc3Qg ISAtZiAkVUNEX0RJUi9CbG9ja3MudHh0IDsgdGhlbgotKyAgICAgICAgQUNfTVNHX0VSUk9SKE5v dCBmb3VuZCAkVUNEX0RJUi9CbG9ja3MudHh0LiBZb3UgY2FuIGdldCBcCi0rdGhlIFVDRCBmaWxl cyBmcm9tIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBLykKLSsgICAgZWxz ZQotKyAgICAgICAgIyBQT1NJWCBTSEVMTCBoYXMgbm8gJHtGT086MDoxfQotKyAgICAgICAgaGVh ZD1gZWNobyAiJFVDRF9ESVIiIHwgY3V0IC1jMWA7Ci0rICAgICAgICBpZiB0ZXN0ICRoZWFkICE9 ICIvIiA7IHRoZW4KLSsgICAgICAgICAgICBVQ0RfRElSPWByZWFscGF0aCAiJFVDRF9ESVIiYAot KyAgICAgICAgZmkKLSsgICAgZmkKLSsgICAgZW5hYmxlX3VuaWNvZGVfZGljdD0ieWVzIChlbmFi bGVkLCB1c2UgLS1kaXNhYmxlLXVuaWNvZGUtZGljdCB0byBkaXNhYmxlKSIKLStmaQotKwotICMg Q2hlY2sgaXNvLWNvZGVzLgotIFBLR19DSEVDS19NT0RVTEVTKElTT0NPREVTLCBbCi0gICAgIGlz by1jb2RlcwotQEAgLTc0Myw2ICs3NzgsOCBAQCBCdWlsZCBvcHRpb25zOgotICAgRW5hYmxlIEVt b2ppIGRpY3QgICAgICAgICAgICAgJGVuYWJsZV9lbW9qaV9kaWN0Ci0gICBVbmljb2RlIEVtb2pp IGRpcmVjdG9yeSAgICAgICAkVU5JQ09ERV9FTU9KSV9ESVIKLSAgIENMRFIgYW5ub3RhdGlvbiBk aXJlY3RvcnkgICAgICRFTU9KSV9BTk5PVEFUSU9OX0RJUgotKyAgRW5hYmxlIFVuaWNvZGUgZGlj dCAgICAgICAgICAgJGVuYWJsZV91bmljb2RlX2RpY3QKLSsgIFVDRCBkaXJlY3RvcnkgICAgICAg ICAgICAgICAgICRVQ0RfRElSCi0gICBSdW4gdGVzdCBjYXNlcyAgICAgICAgICAgICAgICAkZW5h YmxlX3Rlc3RzCi0gXSkKLSAKLWRpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5pbiBiL3BvL1BPVEZJ TEVTLmluCi1pbmRleCAwMGY3YzdmNi4uNThkMWUzOWQgMTAwNjQ0Ci0tLS0gYS9wby9QT1RGSUxF Uy5pbgotKysrIGIvcG8vUE9URklMRVMuaW4KLUBAIC01MSw2ICs1MSw3IEBAIHNyYy9pYnVzcGFu ZWxzZXJ2aWNlLmMKLSBzcmMvaWJ1c3Byb3h5LmMKLSBzcmMvaWJ1c3JlZ2lzdHJ5LmMKLSBzcmMv aWJ1c3NlcnZpY2UuYwotK3NyYy9pYnVzdW5pY29kZWdlbi5oCi0gc3JjL2lidXN1dGlsLmMKLSBz cmMva2V5bmFtZS10YWJsZS5oCi0gdG9vbHMvbWFpbi52YWxhCi1kaWZmIC0tZ2l0IGEvc3JjL01h a2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAzMDMyNTBmNS4uMWJhNDE4ZDggMTAw NjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTQx LDYgKzQxLDcgQEAgSU5UUk9TUEVDVElPTl9DT01QSUxFUl9BUkdTID0gXAotICAgICAkKE5VTEwp Ci0gSU5UUk9TUEVDVElPTl9HSVJTID0KLSBDTEVBTkZJTEVTID0KLStub2luc3RfUFJPR1JBTVMg PQotIAotICMgQyBwcmVwcm9jZXNzb3IgZmxhZ3MKLSBBTV9DUFBGTEFHUyA9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMDAsNiArMTAxLDcgQEAgaWJ1 c19zb3VyY2VzID0gICAgICAgICAgICAgIFwKLSAgICAgaWJ1c3NlcnZpY2UuYyAgICAgICAgICAg XAotICAgICBpYnVzc2hhcmUuYyAgICAgICAgICAgICBcCi0gICAgIGlidXN0ZXh0LmMgICAgICAg ICAgICAgIFwKLSsgICAgaWJ1c3VuaWNvZGUuYyAgICAgICAgICAgXAotICAgICBpYnVzdXRpbC5j ICAgICAgICAgICAgICBcCi0gICAgIGlidXN4bWwuYyAgICAgICAgICAgICAgIFwKLSAgICAgJChO VUxMKQotQEAgLTE1MSw2ICsxNTMsNyBAQCBpYnVzX2hlYWRlcnMgPSAgICAgICAgICAgICAgXAot ICAgICBpYnVzc2hhcmUuaCAgICAgICAgICAgICBcCi0gICAgIGlidXN0ZXh0LmggICAgICAgICAg ICAgIFwKLSAgICAgaWJ1c3R5cGVzLmggICAgICAgICAgICAgXAotKyAgICBpYnVzdW5pY29kZS5o ICAgICAgICAgICBcCi0gICAgIGlidXN1dGlsLmggICAgICAgICAgICAgIFwKLSAgICAgaWJ1c3ht bC5oICAgICAgICAgICAgICAgXAotICAgICAkKE5VTEwpCi1AQCAtMTY5LDYgKzE3Miw3IEBAIGli dXNfcHJpdmF0ZV9oZWFkZXJzID0gICAgICAgICAgXAotICAgICBpYnVzZW1vamlnZW4uaCAgICAg ICAgICAgICAgXAotICAgICBpYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oICAgXAotICAgICBpYnVz aW50ZXJuYWwuaCAgICAgICAgICAgICAgXAotKyAgICBpYnVzdW5pY29kZWdlbi5oICAgICAgICAg ICAgXAotICAgICBrZXluYW1lLXRhYmxlLmggICAgICAgICAgICAgXAotICAgICAkKE5VTEwpCi0g bm9pbnN0X0hFQURFUlMgPSAgICAgICAgICAgIFwKLUBAIC0yNDEsNyArMjQ1LDcgQEAgZGljdGRp ciA9ICQocGtnZGF0YWRpcikvZGljdHMKLSBkaWN0X0RBVEEgPSBkaWN0cy9lbW9qaS1lbi5kaWN0 Ci0gTEFOR19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJCh3aWxkY2FyZCAkKEVNT0pJX0FO Tk9UQVRJT05fRElSKS8qLnhtbCkpKQotIAotLW5vaW5zdF9QUk9HUkFNUyA9IGVtb2ppLXBhcnNl cgotK25vaW5zdF9QUk9HUkFNUyArPSBlbW9qaS1wYXJzZXIKLSAKLSBkaWN0cy9lbW9qaS1lbi5k aWN0OiBlbW9qaS1wYXJzZXIKLSAJJChBTV9WX2F0KWlmIHRlc3QgeCIkKExBTkdfRklMRVMpIiA9 IHggOyB0aGVuIFwKLUBAIC0zMjUsMTIgKzMyOSw2MCBAQCBjbGVhbi1sb2NhbDoKLSAJJChOVUxM KQotIGVuZGlmCi0gCi0raWYgRU5BQkxFX1VOSUNPREVfRElDVAotK3VuaWNvZGVkaXIgPSAkKHBr Z2RhdGFkaXIpL2RpY3RzCi0rdW5pY29kZV9EQVRBID0gZGljdHMvdW5pY29kZS1uYW1lcy5kaWN0 IGRpY3RzL3VuaWNvZGUtYmxvY2tzLmRpY3QKLStub2luc3RfUFJPR1JBTVMgKz0gdW5pY29kZS1w YXJzZXIKLSsKLStkaWN0cy91bmljb2RlLW5hbWVzLmRpY3Q6IHVuaWNvZGUtcGFyc2VyCi0rCSQo QU1fVl9hdClpbnB1dF9maWxlPSIkKFVDRF9ESVIpL05hbWVzTGlzdC50eHQiOyBcCi0rCWlmIHRl c3QgISAtZiAiJCRpbnB1dF9maWxlIiA7IHRoZW4gXAotKwkgICAgZWNobyAiV0FSTklORzogTm90 IGZvdW5kICQkaW5wdXRfZmlsZSIgMT4mMjsgXAotKwllbHNlIFwKLSsJICAgICQoYnVpbGRkaXIp L3VuaWNvZGUtcGFyc2VyIFwKLSsJICAgICAgICAtLWlucHV0LW5hbWVzLWxpc3QgJCRpbnB1dF9m aWxlIFwKLSsJICAgICAgICAtLW91dHB1dC1uYW1lcy1saXN0ICRAOyBcCi0rCSAgICBlY2hvICJH ZW5lcmF0ZWQgJEAiOyBcCi0rCWZpOwotKwotK2RpY3RzL3VuaWNvZGUtYmxvY2tzLmRpY3Q6IHVu aWNvZGUtcGFyc2VyCi0rCSQoQU1fVl9hdClpbnB1dF9maWxlPSIkKFVDRF9ESVIpL0Jsb2Nrcy50 eHQiOyBcCi0rCWlmIHRlc3QgISAtZiAiJCRpbnB1dF9maWxlIiA7IHRoZW4gXAotKwkgICAgZWNo byAiV0FSTklORzogTm90IGZvdW5kICQkaW5wdXRfZmlsZSIgMT4mMjsgXAotKwllbHNlIFwKLSsJ ICAgICQoYnVpbGRkaXIpL3VuaWNvZGUtcGFyc2VyIFwKLSsJICAgICAgICAtLWlucHV0LWJsb2Nr cyAkJGlucHV0X2ZpbGUgXAotKwkgICAgICAgIC0tb3V0cHV0LWJsb2Nrcy10cmFucyBpYnVzdW5p Y29kZWdlbi5oIFwKLSsJICAgICAgICAtLW91dHB1dC1ibG9ja3MgJEA7IFwKLSsJICAgIGVjaG8g IkdlbmVyYXRlZCAkQCI7IFwKLSsJZmk7Ci0rCi0raWJ1c3VuaWNvZGVnZW4uaDogZGljdHMvdW5p Y29kZS1ibG9ja3MuZGljdAotKwkkKE5VTEwpCi0rCi0rdW5pY29kZV9wYXJzZXJfU09VUkNFUyA9 ICAgICAgICBcCi0rICAgIHVuaWNvZGUtcGFyc2VyLmMgICAgICAgICAgICBcCi0rICAgICQoTlVM TCkKLSt1bmljb2RlX3BhcnNlcl9DRkxBR1MgPSAgICAgICAgIFwKLSsgICAgJChHTElCMl9DRkxB R1MpICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK3VuaWNvZGVfcGFyc2VyX0xEQUREID0g ICAgICAgICAgXAotKyAgICAkKEdMSUIyX0xJQlMpICAgICAgICAgICAgICAgXAotKyAgICAkKGxp YmlidXMpICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0rY2xlYW4tbG9jYWw6 Ci0rCS1ybSAtcmYgZGljdHMKLSsJJChOVUxMKQotK2VuZGlmCi0rCi0gRVhUUkFfRElTVCA9ICAg ICAgICAgICAgICAgICAgICBcCi0gICAgIGVtb2ppLXBhcnNlci5jICAgICAgICAgICAgICBcCi0g ICAgIGlidXN2ZXJzaW9uLmguaW4gICAgICAgICAgICBcCi0gICAgIGlidXNtYXJzaGFsZXJzLmxp c3QgICAgICAgICBcCi0gICAgIGlidXNlbnVtdHlwZXMuaC50ZW1wbGF0ZSAgICBcCi0gICAgIGli dXNlbnVtdHlwZXMuYy50ZW1wbGF0ZSAgICBcCi0rICAgIHVuaWNvZGUtcGFyc2VyLmMgICAgICAg ICAgICBcCi0gICAgICQoTlVMTCkKLSAKLSBDTEVBTkZJTEVTICs9ICAgICAgICAgICAgICAgICAg IFwKLUBAIC0zNDEsNiArMzkzLDcgQEAgQ0xFQU5GSUxFUyArPSAgICAgICAgICAgICAgICAgICBc Ci0gCi0gRElTVENMRUFORklMRVMgPSAgICAgICAgICAgICAgICBcCi0gICAgIGlidXNlbW9qaWdl bi5oICAgICAgICAgICAgICBcCi0rICAgIGlidXN1bmljb2RlZ2VuLmggICAgICAgICAgICBcCi0g ICAgIGlidXN2ZXJzaW9uLmggICAgICAgICAgICAgICBcCi0gICAgICQoTlVMTCkKLSAKLWRpZmYg LS1naXQgYS9zcmMvZW1vamktcGFyc2VyLmMgYi9zcmMvZW1vamktcGFyc2VyLmMKLWluZGV4IGZl M2U0ZWY4Li4wZjdjOGNmYiAxMDA2NDQKLS0tLSBhL3NyYy9lbW9qaS1wYXJzZXIuYwotKysrIGIv c3JjL2Vtb2ppLXBhcnNlci5jCi1AQCAtMSw3ICsxLDcgQEAKLSAvKiAtKi0gbW9kZTogQzsgYy1i YXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0gLyogdmltOnNl dCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotLSAqIENvcHlyaWdodCAo QykgMjAxNi0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAxNiBSZWQgSGF0LCBJbmMuCi0gICoK LSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCi1AQCAtMTEyNiw2ICsxMTI2LDcgQEAgY2F0ZWdvcnlfZmlsZV9zYXZlIChjb25z dCBnY2hhciAqZmlsZW5hbWUsCi0gICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyAoX19GSUxF X18sICZjb250ZW50LCAmbGVuZ3RoLCAmZXJyb3IpKSB7Ci0gICAgICAgICBnX3dhcm5pbmcgKCJG YWlsZWQgdG8gbG9hZCAlczogJXMiLCBfX0ZJTEVfXywgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAg ICAgZ19jbGVhcl9wb2ludGVyICgmZXJyb3IsIGdfZXJyb3JfZnJlZSk7Ci0rICAgICAgICByZXR1 cm47Ci0gICAgIH0KLSAgICAgYnVmZiA9IGdfc3RyaW5nX25ldyAoTlVMTCk7Ci0gICAgIHAgPSBj b250ZW50OwotZGlmZiAtLWdpdCBhL3NyYy9pYnVzLmggYi9zcmMvaWJ1cy5oCi1pbmRleCBjNmNm NThjZi4uODAxMTcyOWYgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1cy5oCi0rKysgYi9zcmMvaWJ1cy5o Ci1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhh dCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJ bmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTU3LDYgKzU4LDcgQEAKLSAjaW5jbHVkZSA8 aWJ1c3V0aWwuaD4KLSAjaW5jbHVkZSA8aWJ1c3JlZ2lzdHJ5Lmg+Ci0gI2luY2x1ZGUgPGlidXNl bW9qaS5oPgotKyNpbmNsdWRlIDxpYnVzdW5pY29kZS5oPgotIAotICNpZm5kZWYgSUJVU19ESVNB QkxFX0RFUFJFQ0FURUQKLSAjaW5jbHVkZSA8aWJ1c2tleXN5bXMtY29tcGF0Lmg+Ci1kaWZmIC0t Z2l0IGEvc3JjL2lidXN1bmljb2RlLmMgYi9zcmMvaWJ1c3VuaWNvZGUuYwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi44NTU5ODE5ZAotLS0tIC9kZXYvbnVsbAotKysrIGIv c3JjL2lidXN1bmljb2RlLmMKLUBAIC0wLDAgKzEsMTA2OSBAQAotKy8qIC0qLSBtb2RlOiBDOyBj LWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8KLSsvKiB2aW06 c2V0IGV0IHN0cz00OiAqLwotKy8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKLSsgKiBDb3B5cmlnaHQg KEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICog Q29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0r ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw MQotKyAqIFVTQQotKyAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZp Zy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxnbGliLmg+Ci0rI2luY2x1ZGUgPGdsaWIvZ3N0 ZGlvLmg+Ci0rI2luY2x1ZGUgImlidXNpbnRlcm5hbC5oIgotKyNpbmNsdWRlICJpYnVzZXJyb3Iu aCIKLSsjaW5jbHVkZSAiaWJ1c3VuaWNvZGUuaCIKLSsKLSsjZGVmaW5lIElCVVNfVU5JQ09ERV9E QVRBX01BR0lDICJJQnVzVW5pY29kZURhdGEiCi0rI2RlZmluZSBJQlVTX1VOSUNPREVfQkxPQ0tf TUFHSUMgIklCdXNVbmljb2RlQmxvY2siCi0rI2RlZmluZSBJQlVTX1VOSUNPREVfREFUQV9WRVJT SU9OICgxKQotKyNkZWZpbmUgSUJVU19VTklDT0RFX0RFU0VSSUFMSVpFX1NJR05BTExfU1RSIFwK LSsgICAgICAgICJkZXNlcmlhbGl6ZS11bmljb2RlIgotKwotK2VudW0gewotKyAgICBQUk9QXzAg PSAwLAotKyAgICBQUk9QX0NPREUsCi0rICAgIFBST1BfTkFNRSwKLSsgICAgUFJPUF9BTElBUywK LSsgICAgUFJPUF9CTE9DS19OQU1FLAotKyAgICBQUk9QX1NUQVJULAotKyAgICBQUk9QX0VORAot K307Ci0rCi0rc3RydWN0IF9JQnVzVW5pY29kZURhdGFQcml2YXRlIHsKLSsgICAgZ3VuaWNoYXIg ICAgY29kZTsKLSsgICAgZ2NoYXIgICAgICAqbmFtZTsKLSsgICAgZ2NoYXIgICAgICAqYWxpYXM7 Ci0rICAgIGdjaGFyICAgICAgKmJsb2NrX25hbWU7Ci0rfTsKLSsKLStzdHJ1Y3QgX0lCdXNVbmlj b2RlQmxvY2tQcml2YXRlIHsKLSsgICAgZ3VuaWNoYXIgICAgc3RhcnQ7Ci0rICAgIGd1bmljaGFy ICAgIGVuZDsKLSsgICAgZ2NoYXIgICAgICAqbmFtZTsKLSt9OwotKwotK3R5cGVkZWYgc3RydWN0 IHsKLSsgICAgSUJ1c1VuaWNvZGVEYXRhTG9hZEFzeW5jRmluaXNoIGNhbGxiYWNrOwotKyAgICBn cG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhOwotK30gSUJ1c1VuaWNvZGVE YXRhTG9hZERhdGE7Ci0rCi0rI2RlZmluZSBJQlVTX1VOSUNPREVfREFUQV9HRVRfUFJJVkFURShv KSAgXAotKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvKSwgXAotKyAgICBJQlVT X1RZUEVfVU5JQ09ERV9EQVRBLCBcCi0rICAgIElCdXNVbmljb2RlRGF0YVByaXZhdGUpKQotKyNk ZWZpbmUgSUJVU19VTklDT0RFX0JMT0NLX0dFVF9QUklWQVRFKG8pICBcCi0rICAgKEdfVFlQRV9J TlNUQU5DRV9HRVRfUFJJVkFURSAoKG8pLCBcCi0rICAgIElCVVNfVFlQRV9VTklDT0RFX0JMT0NL LCBcCi0rICAgIElCdXNVbmljb2RlQmxvY2tQcml2YXRlKSkKLSsKLSsvKiBmdW5jdGlvbnMgcHJv dG90eXBlICovCi0rc3RhdGljIHZvaWQgICAgICBpYnVzX3VuaWNvZGVfZGF0YV9zZXRfcHJvcGVy dHkgKElCdXNVbmljb2RlRGF0YSAgICAgICp1bmljb2RlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgcHJvcF9p ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgR1ZhbHVlICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgICAqcHNwZWMpOwotK3N0YXRp YyB2b2lkICAgICAgaWJ1c191bmljb2RlX2RhdGFfZ2V0X3Byb3BlcnR5IChJQnVzVW5pY29kZURh dGEgICAgICAqdW5pY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgICAgICAgICAg ICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR1BhcmFtU3BlYyAgICAgICAgICAgKnBzcGVjKTsKLStzdGF0aWMgdm9pZCAgICAgIGlidXNf dW5pY29kZV9kYXRhX2Rlc3Ryb3kgICAgICAoSUJ1c1VuaWNvZGVEYXRhICAgICAgKnVuaWNvZGUp OwotK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c191bmljb2RlX2RhdGFfc2VyaWFsaXplICAgIChJQnVz VW5pY29kZURhdGEgICAgICAqdW5pY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICAgICAgKmJ1aWxkZXIpOwotK3N0 YXRpYyBnaW50ICAgICAgaWJ1c191bmljb2RlX2RhdGFfZGVzZXJpYWxpemUgIChJQnVzVW5pY29k ZURhdGEgICAgICAqdW5pY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgICAgKnZhcmlhbnQpOwotK3N0YXRpYyBn Ym9vbGVhbiAgaWJ1c191bmljb2RlX2RhdGFfY29weSAgICAgICAgIChJQnVzVW5pY29kZURhdGEg ICAgICAqZGVzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBJQnVzVW5pY29kZURhdGEgKnNyYyk7Ci0rc3RhdGljIHZvaWQgICAgICBpYnVz X3VuaWNvZGVfYmxvY2tfc2V0X3Byb3BlcnR5Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKElCdXNVbmljb2RlQmxvY2sgICAgICpibG9jaywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAg ICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAgICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICAg KnBzcGVjKTsKLStzdGF0aWMgdm9pZCAgICAgIGlidXNfdW5pY29kZV9ibG9ja19nZXRfcHJvcGVy dHkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1 c1VuaWNvZGVCbG9jayAgICAgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgcHJvcF9pZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAg ICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgICAqcHNwZWMpOwotK3N0YXRpYyB2b2lkICAg ICAgaWJ1c191bmljb2RlX2Jsb2NrX2Rlc3Ryb3kgICAgIChJQnVzVW5pY29kZUJsb2NrICAgICAq YmxvY2spOwotK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c191bmljb2RlX2Jsb2NrX3NlcmlhbGl6ZSAg IChJQnVzVW5pY29kZUJsb2NrICAgICAqYmxvY2ssCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAgICAgICpidWlsZGVyKTsK LStzdGF0aWMgZ2ludCAgICAgIGlidXNfdW5pY29kZV9ibG9ja19kZXNlcmlhbGl6ZSAoSUJ1c1Vu aWNvZGVCbG9jayAgICAgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAgICAqdmFyaWFudCk7Ci0rc3RhdGlj IGdib29sZWFuICBpYnVzX3VuaWNvZGVfYmxvY2tfY29weSAgICAgICAgKElCdXNVbmljb2RlQmxv Y2sgICAgICpkZXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IElCdXNVbmljb2RlQmxvY2sgKnNyYyk7Ci0rCi0rR19ERUZJTkVfVFlQRSAo SUJ1c1VuaWNvZGVEYXRhLCBpYnVzX3VuaWNvZGVfZGF0YSwgSUJVU19UWVBFX1NFUklBTElaQUJM RSkKLStHX0RFRklORV9UWVBFIChJQnVzVW5pY29kZUJsb2NrLCBpYnVzX3VuaWNvZGVfYmxvY2ss IElCVVNfVFlQRV9TRVJJQUxJWkFCTEUpCi0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3VuaWNvZGVf ZGF0YV9jbGFzc19pbml0IChJQnVzVW5pY29kZURhdGFDbGFzcyAqY2xhc3MpCi0rewotKyAgICBJ QnVzT2JqZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IElCVVNfT0JKRUNUX0NMQVNTIChjbGFzcyk7 Ci0rICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFz cyk7Ci0rICAgIElCdXNTZXJpYWxpemFibGVDbGFzcyAqc2VyaWFsaXphYmxlX2NsYXNzID0gSUJV U19TRVJJQUxJWkFCTEVfQ0xBU1MgKGNsYXNzKTsKLSsKLSsgICAgb2JqZWN0X2NsYXNzLT5kZXN0 cm95ID0gKElCdXNPYmplY3REZXN0cm95RnVuYykgaWJ1c191bmljb2RlX2RhdGFfZGVzdHJveTsK LSsgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KLSsgICAgICAgICAgICAoR09iamVj dFNldFByb3BlcnR5RnVuYykgaWJ1c191bmljb2RlX2RhdGFfc2V0X3Byb3BlcnR5OwotKyAgICBn b2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJv cGVydHlGdW5jKSBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfcHJvcGVydHk7Ci0rICAgIHNlcmlhbGl6 YWJsZV9jbGFzcy0+c2VyaWFsaXplICAgPQotKyAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxl U2VyaWFsaXplRnVuYykgaWJ1c191bmljb2RlX2RhdGFfc2VyaWFsaXplOwotKyAgICBzZXJpYWxp emFibGVfY2xhc3MtPmRlc2VyaWFsaXplID0KLSsgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJs ZURlc2VyaWFsaXplRnVuYykgaWJ1c191bmljb2RlX2RhdGFfZGVzZXJpYWxpemU7Ci0rICAgIHNl cmlhbGl6YWJsZV9jbGFzcy0+Y29weSAgICAgICAgPQotKyAgICAgICAgICAgIChJQnVzU2VyaWFs aXphYmxlQ29weUZ1bmMpIGlidXNfdW5pY29kZV9kYXRhX2NvcHk7Ci0rCi0rICAgIGdfdHlwZV9j bGFzc19hZGRfcHJpdmF0ZSAoY2xhc3MsIHNpemVvZiAoSUJ1c1VuaWNvZGVEYXRhUHJpdmF0ZSkp OwotKwotKyAgICAvKiBpbnN0YWxsIHByb3BlcnRpZXMgKi8KLSsgICAgLyoqCi0rICAgICAqIElC dXNVbmljb2RlRGF0YTpjb2RlOgotKyAgICAgKgotKyAgICAgKiBUaGUgVW5pb2RlIGNvZGUgcG9p bnQKLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmpl Y3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX0NPREUsCi0rICAgICAgICAgICAg ICAgICAgICBnX3BhcmFtX3NwZWNfdW5pY2hhciAoImNvZGUiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICJjb2RlIHBvaW50IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFVuaWNv ZGUgY29kZSBwb2ludCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp KTsKLSsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNVbmljb2RlRGF0YTpuYW1lOgotKyAgICAg KgotKyAgICAgKiBUaGUgVW5pb2RlIG5hbWUKLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNz X2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQ Uk9QX05BTUUsCi0rICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibmFt ZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICJUaGUgVW5pY29kZSBuYW1lIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O U1RSVUNUKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzVW5pY29kZURhdGE6YWxpYXM6Ci0r ICAgICAqCi0rICAgICAqIFRoZSBVbmlvZGUgYWxpYXMgbmFtZQotKyAgICAgKi8KLSsgICAgZ19v YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAg ICAgICAgICAgIFBST1BfQUxJQVMsCi0rICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf c3RyaW5nICgiYWxpYXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyBuYW1lIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFVuaWNvZGUgYWxpYXMgbmFtZSIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgIiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJB TV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCkpOwotKwotKyAgICAvKioKLSsgICAgICog SUJ1c1VuaWNvZGVEYXRhOmJsb2NrLW5hbWU6Ci0rICAgICAqCi0rICAgICAqIFRoZSBVbmlvZGUg YmxvY2sgbmFtZQotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0 eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfQkxPQ0tfTkFNRSwK LSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJibG9jay1uYW1lIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAiYmxvY2sgbmFtZSIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgIlRoZSBVbmljb2RlIGJsb2NrIG5hbWUiLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19Q QVJBTV9DT05TVFJVQ1QpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3VuaWNvZGVfZGF0 YV9pbml0IChJQnVzVW5pY29kZURhdGEgKnVuaWNvZGUpCi0rewotKyAgICB1bmljb2RlLT5wcml2 ID0gSUJVU19VTklDT0RFX0RBVEFfR0VUX1BSSVZBVEUgKHVuaWNvZGUpOwotK30KLSsKLStzdGF0 aWMgdm9pZAotK2lidXNfdW5pY29kZV9kYXRhX2Rlc3Ryb3kgKElCdXNVbmljb2RlRGF0YSAqdW5p Y29kZSkKLSt7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJnVuaWNvZGUtPnByaXYtPm5hbWUsIGdf ZnJlZSk7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJnVuaWNvZGUtPnByaXYtPmFsaWFzLCBnX2Zy ZWUpOwotKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZ1bmljb2RlLT5wcml2LT5ibG9ja19uYW1lLCBn X2ZyZWUpOwotKwotKyAgICBJQlVTX09CSkVDVF9DTEFTUyAoaWJ1c191bmljb2RlX2RhdGFfcGFy ZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgZGVzdHJveSAoSUJVU19PQkpFQ1QgKHVuaWNvZGUp KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3VuaWNvZGVfZGF0YV9zZXRfcHJvcGVydHkg KElCdXNVbmljb2RlRGF0YSAqdW5pY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgcHJvcF9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEdWYWx1ZSAgICAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHUGFyYW1TcGVjICAgICAgKnBzcGVjKQotK3sKLSsgICAgc3dpdGNoIChwcm9wX2lk KSB7Ci0rICAgIGNhc2UgUFJPUF9DT0RFOgotKyAgICAgICAgZ19hc3NlcnQgKHVuaWNvZGUtPnBy aXYtPmNvZGUgPT0gMCk7Ci0rICAgICAgICB1bmljb2RlLT5wcml2LT5jb2RlID0gZ192YWx1ZV9n ZXRfdWludCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9OQU1FOgot KyAgICAgICAgZ19hc3NlcnQgKHVuaWNvZGUtPnByaXYtPm5hbWUgPT0gTlVMTCk7Ci0rICAgICAg ICB1bmljb2RlLT5wcml2LT5uYW1lID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7Ci0rICAg ICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0FMSUFTOgotKyAgICAgICAgZ19hc3NlcnQgKHVu aWNvZGUtPnByaXYtPmFsaWFzID09IE5VTEwpOwotKyAgICAgICAgdW5pY29kZS0+cHJpdi0+YWxp YXMgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBj YXNlIFBST1BfQkxPQ0tfTkFNRToKLSsgICAgICAgIGdfZnJlZSAodW5pY29kZS0+cHJpdi0+Ymxv Y2tfbmFtZSk7Ci0rICAgICAgICB1bmljb2RlLT5wcml2LT5ibG9ja19uYW1lID0gZ192YWx1ZV9k dXBfc3RyaW5nICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAg ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAodW5pY29kZSwgcHJvcF9pZCwg cHNwZWMpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c191bmljb2RlX2RhdGFf Z2V0X3Byb3BlcnR5IChJQnVzVW5pY29kZURhdGEgKnVuaWNvZGUsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICpwc3BlYykKLSt7Ci0rICAgIHN3 aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBST1BfQ09ERToKLSsgICAgICAgIGdfdmFsdWVf c2V0X3VpbnQgKHZhbHVlLCBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfY29kZSAodW5pY29kZSkpOwot KyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9OQU1FOgotKyAgICAgICAgZ192YWx1ZV9z ZXRfc3RyaW5nICh2YWx1ZSwgaWJ1c191bmljb2RlX2RhdGFfZ2V0X25hbWUgKHVuaWNvZGUpKTsK LSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfQUxJQVM6Ci0rICAgICAgICBnX3ZhbHVl X3NldF9zdHJpbmcgKHZhbHVlLCBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfYWxpYXMgKHVuaWNvZGUp KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfQkxPQ0tfTkFNRToKLSsgICAgICAg IGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGlidXNfdW5pY29kZV9kYXRhX2dldF9ibG9ja19u YW1lICh1bmljb2RlKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAg IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAodW5pY29kZSwgcHJvcF9pZCwgcHNw ZWMpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfdW5pY29kZV9kYXRh X3NlcmlhbGl6ZSAoSUJ1c1VuaWNvZGVEYXRhICAgKnVuaWNvZGUsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgICAqYnVpbGRlcikKLSt7Ci0rICAgIGdib29s ZWFuIHJldHZhbCA9IElCVVNfU0VSSUFMSVpBQkxFX0NMQVNTIChpYnVzX3VuaWNvZGVfZGF0YV9w YXJlbnRfY2xhc3MpLT4KLSsgICAgICAgICAgICBzZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxl ICopdW5pY29kZSwgYnVpbGRlcik7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWws IEZBTFNFKTsKLSsKLSsjZGVmaW5lIE5PVE5VTEwocykgKChzKSAhPSBOVUxMID8gKHMpIDogIiIp Ci0rICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwgeW91IGNhbiBhcHBlbmQg aXQgYXQgdGhlIGVuZCBhbmQKLSsgICAgICogeW91IHNob3VsZCBub3QgY2hhbmdlIHRoZSBzZXJp YWxpemVkIG9yZGVyIG9mIG5hbWUsIGxvbmduYW1lLAotKyAgICAgKiBkZXNjcmlwdGlvbiwgLi4u IGJlY2F1c2UgdGhlIG9yZGVyIGlzIGFsc28gdXNlZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMKLSsg ICAgICogbGlrZXMgaWJ1cy1xdC4gKi8KLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWls ZGVyLCAidSIsIHVuaWNvZGUtPnByaXYtPmNvZGUpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9h ZGQgKGJ1aWxkZXIsICJzIiwgTk9UTlVMTCAodW5pY29kZS0+cHJpdi0+bmFtZSkpOwotKyAgICBn X3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJzIiwgTk9UTlVMTCAodW5pY29kZS0+cHJp di0+YWxpYXMpKTsKLSsgICAgLyogVXNlIElCdXNVbmljb2RlQmxvY2sgZm9yIG1lbW9yeSB1c2Fn ZS4KLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAicyIsIE5PVE5VTEwgKHVu aWNvZGUtPnByaXYtPmJsb2NrX25hbWUpKTsKLSsgICAgICovCi0rI3VuZGVmIE5PVE5VTEwKLSsg ICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK3N0YXRpYyBnaW50Ci0raWJ1c191bmljb2RlX2RhdGFf ZGVzZXJpYWxpemUgKElCdXNVbmljb2RlRGF0YSAqdW5pY29kZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICp2YXJpYW50KQotK3sKLSsgICAgZ2ludCBy ZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c191bmljb2RlX2RhdGFfcGFyZW50 X2NsYXNzKS0+Ci0rICAgICAgICAgICAgZGVzZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICop dW5pY29kZSwgdmFyaWFudCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIDAp OwotKwotKyAgICAvKiBJZiB5b3Ugd2lsbCBhZGQgYSBuZXcgcHJvcGVydHksIHlvdSBjYW4gYXBw ZW5kIGl0IGF0IHRoZSBlbmQgYW5kCi0rICAgICAqIHlvdSBzaG91bGQgbm90IGNoYW5nZSB0aGUg c2VyaWFsaXplZCBvcmRlciBvZiBuYW1lLCBsb25nbmFtZSwKLSsgICAgICogZGVzY3JpcHRpb24s IC4uLiBiZWNhdXNlIHRoZSBvcmRlciBpcyBhbHNvIHVzZWQgaW4gb3RoZXIgYXBwbGljYXRpb25z Ci0rICAgICAqIGxpa2VzIGlidXMtcXQuICovCi0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAidSIsICZ1bmljb2RlLT5wcml2LT5jb2RlKTsKLSsgICAgaWJ1c19n X3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyssCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLT5wcml2LT5uYW1lKTsKLSsgICAg aWJ1c19nX3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyssCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLT5wcml2LT5hbGlhcyk7 Ci0rICAgIC8qIFVzZSBJQnVzVW5pY29kZUJsb2NrIGZvciBtZW1vcnkgdXNhZ2UuCi0rICAgIGli dXNfZ192YXJpYW50X2dldF9jaGlsZF9zdHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pY29kZS0+cHJpdi0+YmxvY2tfbmFt ZSk7Ci0rICAgICAqLwotKyAgICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xl YW4KLStpYnVzX3VuaWNvZGVfZGF0YV9jb3B5IChJQnVzVW5pY29kZURhdGEgICAgICAgKmRlc3Qs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c1VuaWNvZGVEYXRhICpzcmMpCi0r ewotKyAgICBnYm9vbGVhbiByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c191 bmljb2RlX2RhdGFfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgY29weSAoKElCdXNTZXJp YWxpemFibGUgKilkZXN0LAotKyAgICAgICAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxlICop c3JjKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHJldHZhbCwgRkFMU0UpOwotKwotKyAg ICBkZXN0LT5wcml2LT5jb2RlICAgICAgICAgICAgID0gc3JjLT5wcml2LT5jb2RlOwotKyAgICBk ZXN0LT5wcml2LT5uYW1lICAgICAgICAgICAgID0gZ19zdHJkdXAgKHNyYy0+cHJpdi0+bmFtZSk7 Ci0rICAgIGRlc3QtPnByaXYtPmFsaWFzICAgICAgICAgICAgPSBnX3N0cmR1cCAoc3JjLT5wcml2 LT5hbGlhcyk7Ci0rICAgIGRlc3QtPnByaXYtPmJsb2NrX25hbWUgICAgICAgPSBnX3N0cmR1cCAo c3JjLT5wcml2LT5ibG9ja19uYW1lKTsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK0lCdXNV bmljb2RlRGF0YSAqCi0raWJ1c191bmljb2RlX2RhdGFfbmV3IChjb25zdCBnY2hhciAqZmlyc3Rf cHJvcGVydHlfbmFtZSwgLi4uKQotK3sKLSsgICAgdmFfbGlzdCB2YXJfYXJnczsKLSsgICAgSUJ1 c1VuaWNvZGVEYXRhICp1bmljb2RlOwotKwotKyAgICBnX2Fzc2VydCAoZmlyc3RfcHJvcGVydHlf bmFtZSAhPSBOVUxMKTsKLSsgICAgdmFfc3RhcnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9u YW1lKTsKLSsgICAgdW5pY29kZSA9IChJQnVzVW5pY29kZURhdGEgKikgZ19vYmplY3RfbmV3X3Zh bGlzdCAoSUJVU19UWVBFX1VOSUNPREVfREFUQSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcHJvcGVydHlfbmFtZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2Fy Z3MpOwotKyAgICB2YV9lbmQgKHZhcl9hcmdzKTsKLSsgICAgLyogY29kZSBpcyByZXF1aXJlZC4g T3RoZXIgcHJvcGVydGllcyBhcmUgc2V0IGluIGNsYXNzX2luaXQgYnkgZGVmYXVsdC4gKi8KLSsg ICAgZ19hc3NlcnQgKHVuaWNvZGUtPnByaXYtPm5hbWUgIT0gTlVMTCk7Ci0rICAgIGdfYXNzZXJ0 ICh1bmljb2RlLT5wcml2LT5hbGlhcyAhPSBOVUxMKTsKLSsgICAgZ19hc3NlcnQgKHVuaWNvZGUt PnByaXYtPmJsb2NrX25hbWUgIT0gTlVMTCk7Ci0rICAgIHJldHVybiB1bmljb2RlOwotK30KLSsK LStndW5pY2hhcgotK2lidXNfdW5pY29kZV9kYXRhX2dldF9jb2RlIChJQnVzVW5pY29kZURhdGEg KnVuaWNvZGUpCi0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19VTklDT0RF X0RBVEEgKHVuaWNvZGUpLCBHX01BWFVJTlQzMik7Ci0rCi0rICAgIHJldHVybiB1bmljb2RlLT5w cml2LT5jb2RlOwotK30KLSsKLStjb25zdCBnY2hhciAqCi0raWJ1c191bmljb2RlX2RhdGFfZ2V0 X25hbWUgKElCdXNVbmljb2RlRGF0YSAqdW5pY29kZSkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChJQlVTX0lTX1VOSUNPREVfREFUQSAodW5pY29kZSksICIiKTsKLSsKLSsgICAgcmV0 dXJuIHVuaWNvZGUtPnByaXYtPm5hbWU7Ci0rfQotKwotK2NvbnN0IGdjaGFyICoKLStpYnVzX3Vu aWNvZGVfZGF0YV9nZXRfYWxpYXMgKElCdXNVbmljb2RlRGF0YSAqdW5pY29kZSkKLSt7Ci0rICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1VOSUNPREVfREFUQSAodW5pY29kZSksICIi KTsKLSsKLSsgICAgcmV0dXJuIHVuaWNvZGUtPnByaXYtPmFsaWFzOwotK30KLSsKLStjb25zdCBn Y2hhciAqCi0raWJ1c191bmljb2RlX2RhdGFfZ2V0X2Jsb2NrX25hbWUgKElCdXNVbmljb2RlRGF0 YSAqdW5pY29kZSkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1VOSUNP REVfREFUQSAodW5pY29kZSksICIiKTsKLSsKLSsgICAgcmV0dXJuIHVuaWNvZGUtPnByaXYtPmJs b2NrX25hbWU7Ci0rfQotKwotK3ZvaWQKLStpYnVzX3VuaWNvZGVfZGF0YV9zZXRfYmxvY2tfbmFt ZSAoSUJ1c1VuaWNvZGVEYXRhICp1bmljb2RlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBnY2hhciAgICAgKmJsb2NrX25hbWUpCi0rewotKyAgICBnX3JldHVybl9p Zl9mYWlsIChJQlVTX0lTX1VOSUNPREVfREFUQSAodW5pY29kZSkpOwotKwotKyAgICBnX2ZyZWUg KHVuaWNvZGUtPnByaXYtPmJsb2NrX25hbWUpOwotKyAgICB1bmljb2RlLT5wcml2LT5ibG9ja19u YW1lID0gZ19zdHJkdXAgKGJsb2NrX25hbWUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3Zhcmlh bnRfZm9yZWFjaF9hZGRfdW5pY29kZSAoSUJ1c1VuaWNvZGVEYXRhICp1bmljb2RlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpidWlsZGVyKQotK3sKLSsg ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkICgKLSsgICAgICAgICAgICBidWlsZGVyLCAidiIsCi0r ICAgICAgICAgICAgaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplIChJQlVTX1NFUklBTElaQUJM RSAodW5pY29kZSkpKTsKLSt9Ci0rCi0rc3RhdGljIEdWYXJpYW50ICoKLStpYnVzX3VuaWNvZGVf ZGF0YV9saXN0X3NlcmlhbGl6ZSAoR1NMaXN0ICpsaXN0KQotK3sKLSsgICAgR1ZhcmlhbnRCdWls ZGVyIGJ1aWxkZXI7Ci0rCi0rICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQgKCZidWlsZGVyLCBH X1ZBUklBTlRfVFlQRSAoImF2IikpOwotKyAgICBnX3NsaXN0X2ZvcmVhY2ggKGxpc3QsICAoR0Z1 bmMpIHZhcmlhbnRfZm9yZWFjaF9hZGRfdW5pY29kZSwgJmJ1aWxkZXIpOwotKyAgICByZXR1cm4g Z192YXJpYW50X2J1aWxkZXJfZW5kICgmYnVpbGRlcik7Ci0rfQotKwotK3N0YXRpYyBHU0xpc3Qg KgotK2lidXNfdW5pY29kZV9kYXRhX2xpc3RfZGVzZXJpYWxpemUgKEdWYXJpYW50ICp2YXJpYW50 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3QgICpzb3VyY2Vf b2JqZWN0KQotK3sKLSsgICAgR1NMaXN0ICpsaXN0ID0gTlVMTDsKLSsgICAgR1ZhcmlhbnRJdGVy IGl0ZXI7Ci0rICAgIEdWYXJpYW50ICp1bmljb2RlX3ZhcmlhbnQgPSBOVUxMOwotKyAgICBnc2l6 ZSBpLCBzaXplOwotKyAgICBnYm9vbGVhbiBoYXNfc2lnbmFsID0gRkFMU0U7Ci0rCi0rICAgIGlm IChHX0lTX09CSkVDVCAoc291cmNlX29iamVjdCkpIHsKLSsgICAgICAgIGhhc19zaWduYWwgPSBn X3NpZ25hbF9sb29rdXAgKAotKyAgICAgICAgICAgICAgICBJQlVTX1VOSUNPREVfREVTRVJJQUxJ WkVfU0lHTkFMTF9TVFIsCi0rICAgICAgICAgICAgICAgIEdfT0JKRUNUX1RZUEUgKHNvdXJjZV9v YmplY3QpKTsKLSsgICAgICAgIGlmICghaGFzX3NpZ25hbCkgewotKyAgICAgICAgICAgIGNvbnN0 IGdjaGFyIHR5cGVfbmFtZSA9IGdfdHlwZV9uYW1lIChzb3VyY2Vfb2JqZWN0KTsKLSsgICAgICAg ICAgICBnX3dhcm5pbmcgKCJHT2JqZWN0ICVzIGRvZXMgbm90IGhhdmUgdGhlIHNpZ25hbCBcIiVz XCIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lID8gdHlwZV9uYW1lIDogIihu dWxsKSIsCi0rICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1VOSUNPREVfREVTRVJJQUxJWkVf U0lHTkFMTF9TVFIpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGdfdmFyaWFudF9pdGVyX2lu aXQgKCZpdGVyLCB2YXJpYW50KTsKLSsgICAgc2l6ZSA9IGdfdmFyaWFudF9pdGVyX25fY2hpbGRy ZW4gKCZpdGVyKTsKLSsgICAgaSA9IDA7Ci0rICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9sb29w ICgmaXRlciwgInYiLCAmdW5pY29kZV92YXJpYW50KSkgewotKyAgICAgICAgSUJ1c1VuaWNvZGVE YXRhICpkYXRhID0KLSsgICAgICAgICAgICAgICAgSUJVU19VTklDT0RFX0RBVEEgKGlidXNfc2Vy aWFsaXphYmxlX2Rlc2VyaWFsaXplICgKLSsgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2Rl X3ZhcmlhbnQpKTsKLSsgICAgICAgIGxpc3QgPSBnX3NsaXN0X2FwcGVuZCAobGlzdCwgZGF0YSk7 Ci0rICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZ1bmljb2RlX3ZhcmlhbnQsIGdfdmFyaWFudF91 bnJlZik7Ci0rICAgICAgICBpZiAoaGFzX3NpZ25hbCAmJiAoaSA9PSAwIHx8ICgoaSArIDEpICUg MTAwKSA9PSAwKSkgewotKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoc291cmNl X29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVU5JQ09E RV9ERVNFUklBTElaRV9TSUdOQUxMX1NUUiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGkgKyAxLCBzaXplKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGkrKzsKLSsgICAgfQot KyAgICBpZiAoaGFzX3NpZ25hbCAmJiAoaSAhPSAxICYmIChpICUgMTAwKSAhPSAwKSkgewotKyAg ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChzb3VyY2Vfb2JqZWN0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQlVTX1VOSUNPREVfREVTRVJJQUxJWkVfU0lHTkFMTF9TVFIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIHNpemUpOwotKyAgICB9Ci0rCi0r ICAgIHJldHVybiBsaXN0OwotK30KLSsKLSt2b2lkCi0raWJ1c191bmljb2RlX2RhdGFfc2F2ZSAo Y29uc3QgZ2NoYXIgKnBhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR1NMaXN0ICAgICAg Kmxpc3QpCi0rewotKyAgICBHVmFyaWFudCAqdmFyaWFudDsKLSsgICAgY29uc3QgZ2NoYXIgKmhl YWRlciA9IElCVVNfVU5JQ09ERV9EQVRBX01BR0lDOwotKyAgICBjb25zdCBndWludDE2IHZlcnNp b24gPSBJQlVTX1VOSUNPREVfREFUQV9WRVJTSU9OOwotKyAgICBjb25zdCBnY2hhciAqY29udGVu dHM7Ci0rICAgIGdzaXplIGxlbmd0aDsKLSsgICAgZ2NoYXIgKmRpcjsKLSsgICAgR1N0YXRCdWYg YnVmID0geyAwLCB9OwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsKLSsgICAgZ19yZXR1 cm5faWZfZmFpbCAocGF0aCAhPSBOVUxMKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAobGlzdCAh PSBOVUxMKTsKLSsgICAgaWYgKGxpc3QtPmRhdGEgPT0gTlVMTCkgewotKyAgICAgICAgZ193YXJu aW5nICgiRmFpbGVkIHRvIHNhdmUgSUJ1cyBVbmljb2RlIGRhdGE6IE5lZWQgYSBsaXN0IGRhdGEu Iik7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgdmFyaWFudCA9IGdfdmFyaWFu dF9uZXcgKCIoc3F2KSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWJ1c191bmljb2RlX2RhdGFfbGlzdF9zZXJpYWxpemUgKGxpc3QpKTsKLSsK LSsgICAgY29udGVudHMgPSAgZ192YXJpYW50X2dldF9kYXRhICh2YXJpYW50KTsKLSsgICAgbGVu Z3RoID0gIGdfdmFyaWFudF9nZXRfc2l6ZSAodmFyaWFudCk7Ci0rCi0rICAgIGRpciA9IGdfcGF0 aF9nZXRfZGlybmFtZSAocGF0aCk7Ci0rICAgIGlmIChnX3N0cmNtcDAgKGRpciwgIi4iKSAhPSAw ICYmIGdfc3RhdCAoZGlyLCAmYnVmKSAhPSAwKSB7Ci0rICAgICAgICBnX21rZGlyX3dpdGhfcGFy ZW50cyAoZGlyLCAwNzc3KTsKLSsgICAgfQotKyAgICBnX2ZyZWUgKGRpcik7Ci0rICAgIGlmICgh Z19maWxlX3NldF9jb250ZW50cyAocGF0aCwgY29udGVudHMsIGxlbmd0aCwgJmVycm9yKSkgewot KyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIHNhdmUgVW5pY29kZSBkaWN0ICVzOiAlcyIs IHBhdGgsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwot KyAgICB9Ci0rCi0rICAgIGdfdmFyaWFudF91bnJlZiAodmFyaWFudCk7Ci0rfQotKwotK3N0YXRp YyBHU0xpc3QgKgotK2lidXNfdW5pY29kZV9kYXRhX2xvYWRfd2l0aF9lcnJvciAoY29uc3QgZ2No YXIgKnBhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0ICAg ICAqc291cmNlX29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdF cnJvciAgICAgKiplcnJvcikKLSt7Ci0rICAgIGdjaGFyICpjb250ZW50cyA9IE5VTEw7Ci0rICAg IGdzaXplIGxlbmd0aCA9IDA7Ci0rICAgIEdWYXJpYW50ICp2YXJpYW50X3RhYmxlID0gTlVMTDsK LSsgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBOVUxMOwotKyAgICBjb25zdCBnY2hhciAqaGVhZGVy ID0gTlVMTDsKLSsgICAgZ3VpbnQxNiB2ZXJzaW9uID0gMDsKLSsgICAgR1NMaXN0ICpyZXR2YWwg PSBOVUxMOwotKwotKyAgICBpZiAoIWdfZmlsZV90ZXN0IChwYXRoLCBHX0ZJTEVfVEVTVF9FWElT VFMpKSB7Ci0rICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsCi0rICAgICAgICAgICAgICAgICAg ICAgSUJVU19FUlJPUiwKLSsgICAgICAgICAgICAgICAgICAgICBJQlVTX0VSUk9SX0ZBSUxFRCwK LSsgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZSBkaWN0IGRvZXMgbm90IGV4aXN0OiAlcyIs IHBhdGgpOwotKyAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKLSsgICAgfQotKwotKyAgICBp ZiAoIWdfZmlsZV9nZXRfY29udGVudHMgKHBhdGgsICZjb250ZW50cywgJmxlbmd0aCwgZXJyb3Ip KSB7Ci0rICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0rCi0rICAgIHZhcmlh bnRfdGFibGUgPSBnX3ZhcmlhbnRfbmV3X2Zyb21fZGF0YSAoR19WQVJJQU5UX1RZUEUgKCIoc3Ep IiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVu dHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rCi0rICAg IGlmICh2YXJpYW50X3RhYmxlID09IE5VTEwpIHsKLSsgICAgICAgIGdfc2V0X2Vycm9yIChlcnJv ciwKLSsgICAgICAgICAgICAgICAgICAgICBJQlVTX0VSUk9SLAotKyAgICAgICAgICAgICAgICAg ICAgIElCVVNfRVJST1JfRkFJTEVELAotKyAgICAgICAgICAgICAgICAgICAgICJjYWNoZSB0YWJs ZSBpcyBicm9rZW4uIik7Ci0rICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0r Ci0rICAgIGdfdmFyaWFudF9nZXQgKHZhcmlhbnRfdGFibGUsICIoJnNxKSIsICZoZWFkZXIsICZ2 ZXJzaW9uKTsKLSsKLSsgICAgaWYgKGdfc3RyY21wMCAoaGVhZGVyLCBJQlVTX1VOSUNPREVfREFU QV9NQUdJQykgIT0gMCkgewotKyAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLAotKyAgICAgICAg ICAgICAgICAgICAgIElCVVNfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICAgSUJVU19FUlJP Ul9GQUlMRUQsCi0rICAgICAgICAgICAgICAgICAgICAgImNhY2hlIGlzIG5vdCBJQnVzVW5pY29k ZURhdGEuIik7Ci0rICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0rCi0rICAg IGlmICh2ZXJzaW9uID4gSUJVU19VTklDT0RFX0RBVEFfVkVSU0lPTikgewotKyAgICAgICAgZ19z ZXRfZXJyb3IgKGVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgIElCVVNfRVJST1IsCi0rICAg ICAgICAgICAgICAgICAgICAgSUJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAgICAgICAgICAgICAg ICAgImNhY2hlIHZlcnNpb24gaXMgZGlmZmVyZW50OiAldSAhPSAldSIsCi0rICAgICAgICAgICAg ICAgICAgICAgdmVyc2lvbiwgSUJVU19VTklDT0RFX0RBVEFfVkVSU0lPTik7Ci0rICAgICAgICBn b3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0rCi0rICAgIHZlcnNpb24gPSAwOwotKyAgICBo ZWFkZXIgPSBOVUxMOwotKyAgICBnX3ZhcmlhbnRfdW5yZWYgKHZhcmlhbnRfdGFibGUpOwotKwot KyAgICB2YXJpYW50X3RhYmxlID0gZ192YXJpYW50X25ld19mcm9tX2RhdGEgKEdfVkFSSUFOVF9U WVBFICgiKHNxdikiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250ZW50cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW5ndGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRkFMU0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KTsKLSsKLSsgICAgaWYgKHZhcmlhbnRfdGFibGUgPT0gTlVMTCkgewotKyAgICAgICAgZ19zZXRf ZXJyb3IgKGVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgIElCVVNfRVJST1IsCi0rICAgICAg ICAgICAgICAgICAgICAgSUJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAgICAgICAgICAgICAgICAg ImNhY2hlIHRhYmxlIGlzIGJyb2tlbi4iKTsKLSsgICAgICAgIGdvdG8gb3V0X2xvYWRfY2FjaGU7 Ci0rICAgIH0KLSsKLSsgICAgZ192YXJpYW50X2dldCAodmFyaWFudF90YWJsZSwgIigmc3F2KSIs Ci0rICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgIE5VTEwsCi0r ICAgICAgICAgICAgICAgICAgICZ2YXJpYW50KTsKLSsKLSsgICAgaWYgKHZhcmlhbnQgPT0gTlVM TCkgewotKyAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLAotKyAgICAgICAgICAgICAgICAgICAg IElCVVNfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICAgSUJVU19FUlJPUl9GQUlMRUQsCi0r ICAgICAgICAgICAgICAgICAgICAgImNhY2hlIGRpY3QgaXMgYnJva2VuLiIpOwotKyAgICAgICAg Z290byBvdXRfbG9hZF9jYWNoZTsKLSsgICAgfQotKwotKyAgICByZXR2YWwgPSBpYnVzX3VuaWNv ZGVfZGF0YV9saXN0X2Rlc2VyaWFsaXplICh2YXJpYW50LCBzb3VyY2Vfb2JqZWN0KTsKLSsKLStv dXRfbG9hZF9jYWNoZToKLSsgICAgaWYgKHZhcmlhbnQpCi0rICAgICAgICBnX3ZhcmlhbnRfdW5y ZWYgKHZhcmlhbnQpOwotKyAgICBpZiAodmFyaWFudF90YWJsZSkKLSsgICAgICAgIGdfdmFyaWFu dF91bnJlZiAodmFyaWFudF90YWJsZSk7Ci0rICAgIGdfZnJlZSAoY29udGVudHMpOwotKwotKyAg ICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStHU0xpc3QgKgotK2lidXNfdW5pY29kZV9kYXRhX2xv YWQgKGNvbnN0IGdjaGFyICpwYXRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3Qg ICAgICpzb3VyY2Vfb2JqZWN0KQotK3sKLSsgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rICAg IEdTTGlzdCAqcmV0dmFsID0gaWJ1c191bmljb2RlX2RhdGFfbG9hZF93aXRoX2Vycm9yIChwYXRo LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc291cmNlX29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0rCi0rICAgIGlmIChyZXR2YWwgPT0gTlVMTCkg ewotKyAgICAgICAgZ193YXJuaW5nICgiJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBn X2Vycm9yX2ZyZWUgKGVycm9yKTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gcmV0dmFsOwotK30K LSsKLStzdGF0aWMgdm9pZAotK2lidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmNfdGhyZWFkIChH VGFzayAgICAgICAgKnRhc2ssCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdwb2ludGVyICAgICAgc291cmNlX29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3BvaW50ZXIgICAgICB0YXNrX2RhdGEsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAqY2FuY2VsbGFibGUpCi0rewotKyAgICBH U0xpc3QgKnJldHZhbDsKLSsgICAgZ2NoYXIgKnBhdGggPSAoZ2NoYXIgKil0YXNrX2RhdGE7Ci0r ICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKwotKyAgICBnX2Fzc2VydCAocGF0aCAhPSBOVUxM KTsKLSsKLSsgICAgcmV0dmFsID0gaWJ1c191bmljb2RlX2RhdGFfbG9hZF93aXRoX2Vycm9yIChw YXRoLCBzb3VyY2Vfb2JqZWN0LCAmZXJyb3IpOwotKyAgICBnX2ZyZWUgKHBhdGgpOwotKyAgICBp ZiAocmV0dmFsID09IE5VTEwpCi0rICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yICh0YXNrLCBl cnJvcik7Ci0rICAgIGVsc2UKLSsgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlciAodGFzaywg cmV0dmFsLCBOVUxMKTsKLSsgICAgZ19vYmplY3RfdW5yZWYgKHRhc2spOwotK30KLSsKLStzdGF0 aWMgdm9pZAotK2lidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmNfZG9uZSAoR09iamVjdCAqc291 cmNlX29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl c3VsdCAqcmVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg dXNlcl9kYXRhKQotK3sKLSsgICAgSUJ1c1VuaWNvZGVEYXRhTG9hZERhdGEgKmRhdGEgPSAoSUJ1 c1VuaWNvZGVEYXRhTG9hZERhdGEqKXVzZXJfZGF0YTsKLSsgICAgR1NMaXN0ICpsaXN0OwotKyAg ICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsgICAgZ19hc3NlcnQgKGRhdGEgIT0gTlVMTCk7Ci0r ICAgIGxpc3QgPSBnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIgKEdfVEFTSyAocmVzKSwgJmVycm9y KTsKLSsgICAgaWYgKGVycm9yKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCIlcyIsIGVycm9yLT5t ZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgZGF0YS0+ Y2FsbGJhY2sgKE5VTEwsIGRhdGEtPnVzZXJfZGF0YSk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAg ICBkYXRhLT5jYWxsYmFjayAobGlzdCwgZGF0YS0+dXNlcl9kYXRhKTsKLSsgICAgfQotKyAgICBn X3NsaWNlX2ZyZWUgKElCdXNVbmljb2RlRGF0YUxvYWREYXRhLCBkYXRhKTsKLSt9Ci0rCi0rdm9p ZAotK2lidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmMgKGNvbnN0IGdjaGFyICAgICAgICAqcGF0 aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0ICAgICAgICAgICAgKnNv dXJjZV9vYmplY3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxl ICAgICAgICpjYW5jZWxsYWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVz VW5pY29kZURhdGFMb2FkQXN5bmNGaW5pc2gKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgR1Rhc2sgKnRh c2s7Ci0rICAgIElCdXNVbmljb2RlRGF0YUxvYWREYXRhICpkYXRhOwotKwotKyAgICBnX3JldHVy bl9pZl9mYWlsIChwYXRoICE9IE5VTEwpOwotKwotKyAgICBkYXRhID0gZ19zbGljZV9uZXcwIChJ QnVzVW5pY29kZURhdGFMb2FkRGF0YSk7Ci0rICAgIGRhdGEtPmNhbGxiYWNrID0gY2FsbGJhY2s7 Ci0rICAgIGRhdGEtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKLSsgICAgdGFzayA9IGdfdGFza19u ZXcgKHNvdXJjZV9vYmplY3QsCi0rICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYWJsZSwK LSsgICAgICAgICAgICAgICAgICAgICAgIGlidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmNfZG9u ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpOwotKyAgICBnX3Rhc2tfc2V0X3NvdXJj ZV90YWcgKHRhc2ssIGlidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmMpOwotKyAgICBnX3Rhc2tf c2V0X3Rhc2tfZGF0YSAodGFzaywgZ19zdHJkdXAgKHBhdGgpLCBOVUxMKTsKLSsgICAgZ190YXNr X3J1bl9pbl90aHJlYWQgKHRhc2ssIGlidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmNfdGhyZWFk KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3VuaWNvZGVfYmxvY2tfY2xhc3NfaW5pdCAo SUJ1c1VuaWNvZGVCbG9ja0NsYXNzICpjbGFzcykKLSt7Ci0rICAgIElCdXNPYmplY3RDbGFzcyAq b2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSsgICAgR09iamVjdENs YXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSsgICAgSUJ1c1Nl cmlhbGl6YWJsZUNsYXNzICpzZXJpYWxpemFibGVfY2xhc3MgPSBJQlVTX1NFUklBTElaQUJMRV9D TEFTUyAoY2xhc3MpOwotKwotKyAgICBvYmplY3RfY2xhc3MtPmRlc3Ryb3kgPSAoSUJ1c09iamVj dERlc3Ryb3lGdW5jKSBpYnVzX3VuaWNvZGVfZGF0YV9kZXN0cm95OwotKyAgICBnb2JqZWN0X2Ns YXNzLT5zZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlGdW5j KSBpYnVzX3VuaWNvZGVfYmxvY2tfc2V0X3Byb3BlcnR5OwotKyAgICBnb2JqZWN0X2NsYXNzLT5n ZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJvcGVydHlGdW5jKSBpYnVz X3VuaWNvZGVfYmxvY2tfZ2V0X3Byb3BlcnR5OwotKyAgICBzZXJpYWxpemFibGVfY2xhc3MtPnNl cmlhbGl6ZSAgID0KLSsgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZVNlcmlhbGl6ZUZ1bmMp IGlidXNfdW5pY29kZV9ibG9ja19zZXJpYWxpemU7Ci0rICAgIHNlcmlhbGl6YWJsZV9jbGFzcy0+ ZGVzZXJpYWxpemUgPQotKyAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxlRGVzZXJpYWxpemVG dW5jKSBpYnVzX3VuaWNvZGVfYmxvY2tfZGVzZXJpYWxpemU7Ci0rICAgIHNlcmlhbGl6YWJsZV9j bGFzcy0+Y29weSAgICAgICAgPQotKyAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxlQ29weUZ1 bmMpIGlidXNfdW5pY29kZV9ibG9ja19jb3B5OwotKwotKyAgICBnX3R5cGVfY2xhc3NfYWRkX3By aXZhdGUgKGNsYXNzLCBzaXplb2YgKElCdXNVbmljb2RlQmxvY2tQcml2YXRlKSk7Ci0rCi0rICAg IC8qIGluc3RhbGwgcHJvcGVydGllcyAqLwotKyAgICAvKioKLSsgICAgICogSUJ1c1VuaWNvZGVC bG9jazpzdGFydDoKLSsgICAgICoKLSsgICAgICogVGhlIFVuaW9kZSBzdGFydCBjb2RlIHBvaW50 Ci0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0 X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9TVEFSVCwKLSsgICAgICAgICAgICAg ICAgICAgIC8qIENhbm5vdCB1c2UgZ19wYXJhbV9zcGVjX3VuaWNoYXIoKSBmb3IgdGhlIFVuaWNv ZGUKLSsgICAgICAgICAgICAgICAgICAgICAqIGJvdW5kYXJ5IHZhbHVlcyBiZWNhdXNlIHRoZSBm dW5jdGlvbiBjaGVja3MKLSsgICAgICAgICAgICAgICAgICAgICAqIGlmIHRoZSB2YWx1ZSBpcyBh IHZhbGlkIFVuaWNvZGUgYmVzaWRlcyBNQVhVSU5ULgotKyAgICAgICAgICAgICAgICAgICAgICov Ci0rICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoInN0YXJ0IiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAic3RhcnQgY29kZSBwb2ludCIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgIlRoZSBVbmljb2RlIHN0YXJ0IGNvZGUgcG9pbnQiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5ULAotKyAgICAg ICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9S RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rCi0rICAgIC8qKgotKyAg ICAgKiBJQnVzVW5pY29kZUJsb2NrOmVuZDoKLSsgICAgICoKLSsgICAgICogVGhlIFVuaW9kZSBl bmQgY29kZSBwb2ludAotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w ZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfRU5ELAotKyAg ICAgICAgICAgICAgICAgICAgLyogQ2Fubm90IHVzZSBnX3BhcmFtX3NwZWNfdW5pY2hhcigpIGZv ciB0aGUgVW5pY29kZQotKyAgICAgICAgICAgICAgICAgICAgICogYm91bmRhcnkgdmFsdWVzIGJl Y2F1c2UgdGhlIGZ1bmN0aW9uIGNoZWNrcwotKyAgICAgICAgICAgICAgICAgICAgICogaWYgdGhl IHZhbHVlIGlzIGEgdmFsaWQgVW5pY29kZSBiZXNpZGVzIE1BWFVJTlQuCi0rICAgICAgICAgICAg ICAgICAgICAgKi8KLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiZW5k IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIGNvZGUgcG9pbnQiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICJUaGUgVW5pY29kZSBlbmQgY29kZSBwb2ludCIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BB UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLSsKLSsKLSsgICAgLyoq Ci0rICAgICAqIElCdXNVbmljb2RlQmxvY2s6bmFtZToKLSsgICAgICoKLSsgICAgICogVGhlIFVu aW9kZSBibG9jayBuYW1lCi0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By b3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9OQU1FLAot KyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoIm5hbWUiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICJuYW1lIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiVGhl IFVuaWNvZGUgbmFtZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIiIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCkpOwot K30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfdW5pY29kZV9ibG9ja19pbml0IChJQnVzVW5pY29k ZUJsb2NrICpibG9jaykKLSt7Ci0rICAgIGJsb2NrLT5wcml2ID0gSUJVU19VTklDT0RFX0JMT0NL X0dFVF9QUklWQVRFIChibG9jayk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c191bmljb2Rl X2Jsb2NrX2Rlc3Ryb3kgKElCdXNVbmljb2RlQmxvY2sgKmJsb2NrKQotK3sKLSsgICAgZ19jbGVh cl9wb2ludGVyICgmYmxvY2stPnByaXYtPm5hbWUsIGdfZnJlZSk7Ci0rCi0rICAgIElCVVNfT0JK RUNUX0NMQVNTIChpYnVzX3VuaWNvZGVfZGF0YV9wYXJlbnRfY2xhc3MpLT4KLSsgICAgICAgICAg ICBkZXN0cm95IChJQlVTX09CSkVDVCAoYmxvY2spKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStp YnVzX3VuaWNvZGVfYmxvY2tfc2V0X3Byb3BlcnR5IChJQnVzVW5pY29kZUJsb2NrICpibG9jaywK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBwcm9w X2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAgICAg KnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAg ICAgKnBzcGVjKQotK3sKLSsgICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9T VEFSVDoKLSsgICAgICAgIGdfYXNzZXJ0IChibG9jay0+cHJpdi0+c3RhcnQgPT0gMCk7Ci0rICAg ICAgICBibG9jay0+cHJpdi0+c3RhcnQgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0rICAg ICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0VORDoKLSsgICAgICAgIGdfYXNzZXJ0IChibG9j ay0+cHJpdi0+ZW5kID09IDApOwotKyAgICAgICAgYmxvY2stPnByaXYtPmVuZCA9IGdfdmFsdWVf Z2V0X3VpbnQgKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfTkFNRToK LSsgICAgICAgIGdfYXNzZXJ0IChibG9jay0+cHJpdi0+bmFtZSA9PSBOVUxMKTsKLSsgICAgICAg IGJsb2NrLT5wcml2LT5uYW1lID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7Ci0rICAgICAg ICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q Uk9QRVJUWV9JRCAoYmxvY2ssIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgfQotK30KLSsKLStzdGF0 aWMgdm9pZAotK2lidXNfdW5pY29kZV9ibG9ja19nZXRfcHJvcGVydHkgKElCdXNVbmljb2RlQmxv Y2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg ICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVl ICAgICAgICAgICAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Bh cmFtU3BlYyAgICAgICAqcHNwZWMpCi0rewotKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKLSsgICAg Y2FzZSBQUk9QX1NUQVJUOgotKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGlidXNf dW5pY29kZV9ibG9ja19nZXRfc3RhcnQgKGJsb2NrKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAg Y2FzZSBQUk9QX0VORDoKLSsgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBpYnVzX3Vu aWNvZGVfYmxvY2tfZ2V0X2VuZCAoYmxvY2spKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNl IFBST1BfTkFNRToKLSsgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGlidXNfdW5p Y29kZV9ibG9ja19nZXRfbmFtZSAoYmxvY2spKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZh dWx0OgotKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChibG9jaywg cHJvcF9pZCwgcHNwZWMpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNf dW5pY29kZV9ibG9ja19zZXJpYWxpemUgKElCdXNVbmljb2RlQmxvY2sgKmJsb2NrLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAgKmJ1aWxkZXIpCi0rewot KyAgICBnYm9vbGVhbiByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c191bmlj b2RlX2Jsb2NrX3BhcmVudF9jbGFzcyktPgotKyAgICAgICAgICAgIHNlcmlhbGl6ZSAoKElCdXNT ZXJpYWxpemFibGUgKilibG9jaywgYnVpbGRlcik7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChyZXR2YWwsIEZBTFNFKTsKLSsKLSsjZGVmaW5lIE5PVE5VTEwocykgKChzKSAhPSBOVUxMID8g KHMpIDogIiIpCi0rICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwgeW91IGNh biBhcHBlbmQgaXQgYXQgdGhlIGVuZCBhbmQKLSsgICAgICogeW91IHNob3VsZCBub3QgY2hhbmdl IHRoZSBzZXJpYWxpemVkIG9yZGVyIG9mIG5hbWUsIGxvbmduYW1lLAotKyAgICAgKiBkZXNjcmlw dGlvbiwgLi4uIGJlY2F1c2UgdGhlIG9yZGVyIGlzIGFsc28gdXNlZCBpbiBvdGhlciBhcHBsaWNh dGlvbnMKLSsgICAgICogbGlrZXMgaWJ1cy1xdC4gKi8KLSsgICAgZ192YXJpYW50X2J1aWxkZXJf YWRkIChidWlsZGVyLCAidSIsIGJsb2NrLT5wcml2LT5zdGFydCk7Ci0rICAgIGdfdmFyaWFudF9i dWlsZGVyX2FkZCAoYnVpbGRlciwgInUiLCBibG9jay0+cHJpdi0+ZW5kKTsKLSsgICAgZ192YXJp YW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAicyIsIE5PVE5VTEwgKGJsb2NrLT5wcml2LT5uYW1l KSk7Ci0rI3VuZGVmIE5PVE5VTEwKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK3N0YXRpYyBn aW50Ci0raWJ1c191bmljb2RlX2Jsb2NrX2Rlc2VyaWFsaXplIChJQnVzVW5pY29kZUJsb2NrICpi bG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAq dmFyaWFudCkKLSt7Ci0rICAgIGdpbnQgcmV0dmFsID0gSUJVU19TRVJJQUxJWkFCTEVfQ0xBU1Mg KGlidXNfdW5pY29kZV9ibG9ja19wYXJlbnRfY2xhc3MpLT4KLSsgICAgICAgICAgICBkZXNlcmlh bGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKilibG9jaywgdmFyaWFudCk7Ci0rICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChyZXR2YWwsIDApOwotKwotKyAgICAvKiBJZiB5b3Ugd2lsbCBhZGQgYSBu ZXcgcHJvcGVydHksIHlvdSBjYW4gYXBwZW5kIGl0IGF0IHRoZSBlbmQgYW5kCi0rICAgICAqIHlv dSBzaG91bGQgbm90IGNoYW5nZSB0aGUgc2VyaWFsaXplZCBvcmRlciBvZiBuYW1lLCBsb25nbmFt ZSwKLSsgICAgICogZGVzY3JpcHRpb24sIC4uLiBiZWNhdXNlIHRoZSBvcmRlciBpcyBhbHNvIHVz ZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zCi0rICAgICAqIGxpa2VzIGlidXMtcXQuICovCi0rICAg IGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZibG9jay0+cHJp di0+c3RhcnQpOwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywg InUiLCAmYmxvY2stPnByaXYtPmVuZCk7Ci0rICAgIGlidXNfZ192YXJpYW50X2dldF9jaGlsZF9z dHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmYmxvY2stPnByaXYtPm5hbWUpOwotKyAgICByZXR1cm4gcmV0dmFsOwotK30KLSsK LStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX3VuaWNvZGVfYmxvY2tfY29weSAoSUJ1c1VuaWNvZGVC bG9jayAgICAgICAqZGVzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c1Vu aWNvZGVCbG9jayAqc3JjKQotK3sKLSsgICAgZ2Jvb2xlYW4gcmV0dmFsID0gSUJVU19TRVJJQUxJ WkFCTEVfQ0xBU1MgKGlidXNfdW5pY29kZV9ibG9ja19wYXJlbnRfY2xhc3MpLT4KLSsgICAgICAg ICAgICBjb3B5ICgoSUJ1c1NlcmlhbGl6YWJsZSAqKWRlc3QsCi0rICAgICAgICAgICAgICAgICAg KElCdXNTZXJpYWxpemFibGUgKilzcmMpOwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAocmV0 dmFsLCBGQUxTRSk7Ci0rCi0rICAgIGRlc3QtPnByaXYtPnN0YXJ0ICAgICAgICAgICAgPSBzcmMt PnByaXYtPnN0YXJ0OwotKyAgICBkZXN0LT5wcml2LT5lbmQgICAgICAgICAgICAgID0gc3JjLT5w cml2LT5lbmQ7Ci0rICAgIGRlc3QtPnByaXYtPm5hbWUgICAgICAgICAgICAgPSBnX3N0cmR1cCAo c3JjLT5wcml2LT5uYW1lKTsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK0lCdXNVbmljb2Rl QmxvY2sgKgotK2lidXNfdW5pY29kZV9ibG9ja19uZXcgKGNvbnN0IGdjaGFyICpmaXJzdF9wcm9w ZXJ0eV9uYW1lLCAuLi4pCi0rewotKyAgICB2YV9saXN0IHZhcl9hcmdzOwotKyAgICBJQnVzVW5p Y29kZUJsb2NrICpibG9jazsKLSsKLSsgICAgZ19hc3NlcnQgKGZpcnN0X3Byb3BlcnR5X25hbWUg IT0gTlVMTCk7Ci0rICAgIHZhX3N0YXJ0ICh2YXJfYXJncywgZmlyc3RfcHJvcGVydHlfbmFtZSk7 Ci0rICAgIGJsb2NrID0gKElCdXNVbmljb2RlQmxvY2sgKikgZ19vYmplY3RfbmV3X3ZhbGlzdCAo SUJVU19UWVBFX1VOSUNPREVfQkxPQ0ssCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9wcm9wZXJ0eV9uYW1lLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2FyZ3MpOwotKyAg ICB2YV9lbmQgKHZhcl9hcmdzKTsKLSsgICAgLyogZW5kIGlzIHJlcXVpcmVkLiBPdGhlciBwcm9w ZXJ0aWVzIGFyZSBzZXQgaW4gY2xhc3NfaW5pdCBieSBkZWZhdWx0LiAqLwotKyAgICBnX2Fzc2Vy dCAoYmxvY2stPnByaXYtPnN0YXJ0ICE9IGJsb2NrLT5wcml2LT5lbmQpOwotKyAgICBnX2Fzc2Vy dCAoYmxvY2stPnByaXYtPm5hbWUgIT0gTlVMTCk7Ci0rICAgIHJldHVybiBibG9jazsKLSt9Ci0r Ci0rZ3VuaWNoYXIKLStpYnVzX3VuaWNvZGVfYmxvY2tfZ2V0X3N0YXJ0IChJQnVzVW5pY29kZUJs b2NrICpibG9jaykKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1VOSUNP REVfQkxPQ0sgKGJsb2NrKSwgR19NQVhVSU5UMzIpOwotKwotKyAgICByZXR1cm4gYmxvY2stPnBy aXYtPnN0YXJ0OwotK30KLSsKLStndW5pY2hhcgotK2lidXNfdW5pY29kZV9ibG9ja19nZXRfZW5k IChJQnVzVW5pY29kZUJsb2NrICpibG9jaykKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChJQlVTX0lTX1VOSUNPREVfQkxPQ0sgKGJsb2NrKSwgR19NQVhVSU5UMzIpOwotKwotKyAgICBy ZXR1cm4gYmxvY2stPnByaXYtPmVuZDsKLSt9Ci0rCi0rY29uc3QgZ2NoYXIgKgotK2lidXNfdW5p Y29kZV9ibG9ja19nZXRfbmFtZSAoSUJ1c1VuaWNvZGVCbG9jayAqYmxvY2spCi0rewotKyAgICBn X3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19VTklDT0RFX0JMT0NLIChibG9jayksICIiKTsK LSsKLSsgICAgcmV0dXJuIGJsb2NrLT5wcml2LT5uYW1lOwotK30KLSsKLStzdGF0aWMgdm9pZAot K3ZhcmlhbnRfZm9yZWFjaF9hZGRfYmxvY2sgKElCdXNVbmljb2RlQmxvY2sgKmJsb2NrLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAqYnVpbGRlcikKLSt7Ci0r ICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoCi0rICAgICAgICAgICAgYnVpbGRlciwgInYiLAot KyAgICAgICAgICAgIGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoSUJVU19TRVJJQUxJWkFC TEUgKGJsb2NrKSkpOwotK30KLSsKLStzdGF0aWMgR1ZhcmlhbnQgKgotK2lidXNfdW5pY29kZV9i bG9ja19saXN0X3NlcmlhbGl6ZSAoR1NMaXN0ICpsaXN0KQotK3sKLSsgICAgR1ZhcmlhbnRCdWls ZGVyIGJ1aWxkZXI7Ci0rCi0rICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQgKCZidWlsZGVyLCBH X1ZBUklBTlRfVFlQRSAoImF2IikpOwotKyAgICBnX3NsaXN0X2ZvcmVhY2ggKGxpc3QsICAoR0Z1 bmMpIHZhcmlhbnRfZm9yZWFjaF9hZGRfYmxvY2ssICZidWlsZGVyKTsKLSsgICAgcmV0dXJuIGdf dmFyaWFudF9idWlsZGVyX2VuZCAoJmJ1aWxkZXIpOwotK30KLSsKLStzdGF0aWMgR1NMaXN0ICoK LStpYnVzX3VuaWNvZGVfYmxvY2tfbGlzdF9kZXNlcmlhbGl6ZSAoR1ZhcmlhbnQgKnZhcmlhbnQp Ci0rewotKyAgICBHU0xpc3QgKmxpc3QgPSBOVUxMOwotKyAgICBHVmFyaWFudEl0ZXIgaXRlcjsK LSsgICAgR1ZhcmlhbnQgKnVuaWNvZGVfdmFyaWFudCA9IE5VTEw7Ci0rCi0rICAgIGdfdmFyaWFu dF9pdGVyX2luaXQgKCZpdGVyLCB2YXJpYW50KTsKLSsgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVy X2xvb3AgKCZpdGVyLCAidiIsICZ1bmljb2RlX3ZhcmlhbnQpKSB7Ci0rICAgICAgICBJQnVzVW5p Y29kZUJsb2NrICpkYXRhID0KLSsgICAgICAgICAgICAgICAgSUJVU19VTklDT0RFX0JMT0NLIChp YnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoCi0rICAgICAgICAgICAgICAgICAgICAgICAg dW5pY29kZV92YXJpYW50KSk7Ci0rICAgICAgICBsaXN0ID0gZ19zbGlzdF9hcHBlbmQgKGxpc3Qs IGRhdGEpOwotKyAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmdW5pY29kZV92YXJpYW50LCBnX3Zh cmlhbnRfdW5yZWYpOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiBsaXN0OwotK30KLSsKLSt2b2lk Ci0raWJ1c191bmljb2RlX2Jsb2NrX3NhdmUgKGNvbnN0IGdjaGFyICpwYXRoLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICBHU0xpc3QgICAgICAqbGlzdCkKLSt7Ci0rICAgIEdWYXJpYW50ICp2 YXJpYW50OwotKyAgICBjb25zdCBnY2hhciAqaGVhZGVyID0gSUJVU19VTklDT0RFX0JMT0NLX01B R0lDOwotKyAgICBjb25zdCBndWludDE2IHZlcnNpb24gPSBJQlVTX1VOSUNPREVfREFUQV9WRVJT SU9OOwotKyAgICBjb25zdCBnY2hhciAqY29udGVudHM7Ci0rICAgIGdzaXplIGxlbmd0aDsKLSsg ICAgZ2NoYXIgKmRpcjsKLSsgICAgR1N0YXRCdWYgYnVmID0geyAwLCB9OwotKyAgICBHRXJyb3Ig KmVycm9yID0gTlVMTDsKLSsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAocGF0aCAhPSBOVUxMKTsK LSsgICAgZ19yZXR1cm5faWZfZmFpbCAobGlzdCAhPSBOVUxMKTsKLSsgICAgaWYgKGxpc3QtPmRh dGEgPT0gTlVMTCkgewotKyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIHNhdmUgSUJ1cyBV bmljb2RlIGJsb2NrOiBOZWVkIGEgbGlzdCBkYXRhLiIpOwotKyAgICAgICAgcmV0dXJuOwotKyAg ICB9Ci0rCi0rICAgIHZhcmlhbnQgPSBnX3ZhcmlhbnRfbmV3ICgiKHNxdikiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmVyc2lvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfdW5pY29kZV9i bG9ja19saXN0X3NlcmlhbGl6ZSAobGlzdCkpOwotKwotKyAgICBjb250ZW50cyA9ICBnX3Zhcmlh bnRfZ2V0X2RhdGEgKHZhcmlhbnQpOwotKyAgICBsZW5ndGggPSAgZ192YXJpYW50X2dldF9zaXpl ICh2YXJpYW50KTsKLSsKLSsgICAgZGlyID0gZ19wYXRoX2dldF9kaXJuYW1lIChwYXRoKTsKLSsg ICAgaWYgKGdfc3RyY21wMCAoZGlyLCAiLiIpICE9IDAgJiYgZ19zdGF0IChkaXIsICZidWYpICE9 IDApIHsKLSsgICAgICAgIGdfbWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NzcpOwotKyAgICB9 Ci0rICAgIGdfZnJlZSAoZGlyKTsKLSsgICAgaWYgKCFnX2ZpbGVfc2V0X2NvbnRlbnRzIChwYXRo LCBjb250ZW50cywgbGVuZ3RoLCAmZXJyb3IpKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWls ZWQgdG8gc2F2ZSBVbmljb2RlIGRpY3QgJXM6ICVzIiwgcGF0aCwgZXJyb3ItPm1lc3NhZ2UpOwot KyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0rICAgIH0KLSsKLSsgICAgZ192YXJpYW50 X3VucmVmICh2YXJpYW50KTsKLSt9Ci0rCi0rR1NMaXN0ICoKLStpYnVzX3VuaWNvZGVfYmxvY2tf bG9hZCAoY29uc3QgZ2NoYXIgKnBhdGgpCi0rewotKyAgICBnY2hhciAqY29udGVudHMgPSBOVUxM OwotKyAgICBnc2l6ZSBsZW5ndGggPSAwOwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsg ICAgR1ZhcmlhbnQgKnZhcmlhbnRfdGFibGUgPSBOVUxMOwotKyAgICBHVmFyaWFudCAqdmFyaWFu dCA9IE5VTEw7Ci0rICAgIGNvbnN0IGdjaGFyICpoZWFkZXIgPSBOVUxMOwotKyAgICBndWludDE2 IHZlcnNpb24gPSAwOwotKyAgICBHU0xpc3QgKnJldHZhbCA9IE5VTEw7Ci0rCi0rICAgIGlmICgh Z19maWxlX3Rlc3QgKHBhdGgsIEdfRklMRV9URVNUX0VYSVNUUykpIHsKLSsgICAgICAgIGdfd2Fy bmluZyAoIlVuaWNvZGUgZGljdCBkb2VzIG5vdCBleGlzdDogJXMiLCBwYXRoKTsKLSsgICAgICAg IGdvdG8gb3V0X2xvYWRfY2FjaGU7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFnX2ZpbGVfZ2V0X2Nv bnRlbnRzIChwYXRoLCAmY29udGVudHMsICZsZW5ndGgsICZlcnJvcikpIHsKLSsgICAgICAgIGdf d2FybmluZyAoIkZhaWxlZCB0byBnZXQgZGljdCBjb250ZW50ICVzOiAlcyIsIHBhdGgsIGVycm9y LT5tZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgZ290 byBvdXRfbG9hZF9jYWNoZTsKLSsgICAgfQotKwotKyAgICB2YXJpYW50X3RhYmxlID0gZ192YXJp YW50X25ld19mcm9tX2RhdGEgKEdfVkFSSUFOVF9UWVBFICgiKHNxKSIpLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKwotKyAgICBpZiAodmFyaWFudF90YWJs ZSA9PSBOVUxMKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJjYWNoZSB0YWJsZSBpcyBicm9rZW4u Iik7Ci0rICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0rCi0rICAgIGdfdmFy aWFudF9nZXQgKHZhcmlhbnRfdGFibGUsICIoJnNxKSIsICZoZWFkZXIsICZ2ZXJzaW9uKTsKLSsK LSsgICAgaWYgKGdfc3RyY21wMCAoaGVhZGVyLCBJQlVTX1VOSUNPREVfQkxPQ0tfTUFHSUMpICE9 IDApIHsKLSsgICAgICAgIGdfd2FybmluZyAoImNhY2hlIGlzIG5vdCBJQnVzVW5pY29kZUJsb2Nr LiIpOwotKyAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKLSsgICAgfQotKwotKyAgICBpZiAo dmVyc2lvbiA+IElCVVNfVU5JQ09ERV9EQVRBX1ZFUlNJT04pIHsKLSsgICAgICAgIGdfd2Fybmlu ZyAoImNhY2hlIHZlcnNpb24gaXMgZGlmZmVyZW50OiAldSAhPSAldSIsCi0rICAgICAgICAgICAg ICAgICAgIHZlcnNpb24sIElCVVNfVU5JQ09ERV9EQVRBX1ZFUlNJT04pOwotKyAgICAgICAgZ290 byBvdXRfbG9hZF9jYWNoZTsKLSsgICAgfQotKwotKyAgICB2ZXJzaW9uID0gMDsKLSsgICAgaGVh ZGVyID0gTlVMTDsKLSsgICAgZ192YXJpYW50X3VucmVmICh2YXJpYW50X3RhYmxlKTsKLSsKLSsg ICAgdmFyaWFudF90YWJsZSA9IGdfdmFyaWFudF9uZXdfZnJvbV9kYXRhIChHX1ZBUklBTlRfVFlQ RSAoIihzcXYpIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGVuZ3RoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZBTFNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 Ci0rCi0rICAgIGlmICh2YXJpYW50X3RhYmxlID09IE5VTEwpIHsKLSsgICAgICAgIGdfd2Fybmlu ZyAoImNhY2hlIHRhYmxlIGlzIGJyb2tlbi4iKTsKLSsgICAgICAgIGdvdG8gb3V0X2xvYWRfY2Fj aGU7Ci0rICAgIH0KLSsKLSsgICAgZ192YXJpYW50X2dldCAodmFyaWFudF90YWJsZSwgIigmc3F2 KSIsCi0rICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgIE5VTEws Ci0rICAgICAgICAgICAgICAgICAgICZ2YXJpYW50KTsKLSsKLSsgICAgaWYgKHZhcmlhbnQgPT0g TlVMTCkgewotKyAgICAgICAgZ193YXJuaW5nICgiY2FjaGUgZGljdCBpcyBicm9rZW4uIik7Ci0r ICAgICAgICBnb3RvIG91dF9sb2FkX2NhY2hlOwotKyAgICB9Ci0rCi0rICAgIHJldHZhbCA9IGli dXNfdW5pY29kZV9ibG9ja19saXN0X2Rlc2VyaWFsaXplICh2YXJpYW50KTsKLSsKLStvdXRfbG9h ZF9jYWNoZToKLSsgICAgaWYgKHZhcmlhbnQpCi0rICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHZh cmlhbnQpOwotKyAgICBpZiAodmFyaWFudF90YWJsZSkKLSsgICAgICAgIGdfdmFyaWFudF91bnJl ZiAodmFyaWFudF90YWJsZSk7Ci0rICAgIGdfZnJlZSAoY29udGVudHMpOwotKwotKyAgICByZXR1 cm4gcmV0dmFsOwotK30KLSsKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c3VuaWNvZGUuaCBiL3NyYy9p YnVzdW5pY29kZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjk5ZGU5 NDUxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvaWJ1c3VuaWNvZGUuaAotQEAgLTAsMCArMSwy OTkgQEAKLSsvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1v ZGU6IG5pbDsgLSotICovCi0rLyogdmltOnNldCBldCBzdHM9NDogKi8KLSsvKiBidXMgLSBUaGUg SW5wdXQgQnVzCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMu Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICog VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKLSsgKiBVU0EKLSsgKi8KLSsKLSsjaWYgIWRlZmlu ZWQgKF9fSUJVU19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZCAoSUJVU19DT01QSUxBVElPTikKLSsj ZXJyb3IgIk9ubHkgPGlidXMuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5IgotKyNlbmRpZgot KwotKyNpZm5kZWYgX19JQlVTX1VOSUNPREVfSF8KLSsjZGVmaW5lIF9fSUJVU19VTklDT0RFX0hf Ci0rCi0rLyoqCi0rICogU0VDVElPTjogaWJ1c3VuaWNvZGUKLSsgKiBAc2hvcnRfZGVzY3JpcHRp b246IHVuaWNvZGUgdXRpbGl0eS4KLSsgKiBAc3RhYmlsaXR5OiBVbnN0YWJsZQotKyAqCi0rICog bWlzY2VsbGFuZW91cyB1bmljb2RlIEFQSXMuCi0rICovCi0rCi0rI2luY2x1ZGUgPGdpby9naW8u aD4KLSsjaW5jbHVkZSAiaWJ1c3NlcmlhbGl6YWJsZS5oIgotKwotKy8qCi0rICogVHlwZSBtYWNy b3MuCi0rICovCi0rLyogZGVmaW5lIEdPQkpFQ1QgbWFjcm9zICovCi0rI2RlZmluZSBJQlVTX1RZ UEVfVU5JQ09ERV9EQVRBICAgICAgIChpYnVzX3VuaWNvZGVfZGF0YV9nZXRfdHlwZSAoKSkKLSsj ZGVmaW5lIElCVVNfVU5JQ09ERV9EQVRBKG9iaikgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D RV9DQVNUICgob2JqKSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJVU19UWVBFX1VOSUNPREVfREFUQSwgSUJ1c1VuaWNvZGVEYXRhKSkKLSsjZGVmaW5lIElCVVNf VU5JQ09ERV9EQVRBX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFz cyksIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9V TklDT0RFX0RBVEEsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC dXNVbmljb2RlRGF0YUNsYXNzKSkKLSsjZGVmaW5lIElCVVNfSVNfVU5JQ09ERV9EQVRBKG9iaikg ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgXAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19UWVBFX1VOSUNPREVfREFUQSkpCi0rI2RlZmlu ZSBJQlVTX1RZUEVfVU5JQ09ERV9CTE9DSyAgICAgIChpYnVzX3VuaWNvZGVfYmxvY2tfZ2V0X3R5 cGUgKCkpCi0rI2RlZmluZSBJQlVTX1VOSUNPREVfQkxPQ0sob2JqKSAgICAgIChHX1RZUEVfQ0hF Q0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElCVVNfVFlQRV9VTklDT0RFX0JMT0NLLCBcCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzVW5pY29kZUJsb2NrKSkKLSsjZGVmaW5lIElCVVNfVU5J Q09ERV9CTE9DS19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3Mp LCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1RZUEVfVU5J Q09ERV9CTE9DSywgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1 c1VuaWNvZGVCbG9ja0NsYXNzKSkKLSsjZGVmaW5lIElCVVNfSVNfVU5JQ09ERV9CTE9DSyhvYmop ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgXAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19UWVBFX1VOSUNPREVfQkxPQ0spKQotKwotKwot K0dfQkVHSU5fREVDTFMKLSsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1VuaWNvZGVEYXRhIElCdXNV bmljb2RlRGF0YTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1VuaWNvZGVEYXRhUHJpdmF0ZSBJQnVz VW5pY29kZURhdGFQcml2YXRlOwotK3R5cGVkZWYgc3RydWN0IF9JQnVzVW5pY29kZURhdGFDbGFz cyBJQnVzVW5pY29kZURhdGFDbGFzczsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1VuaWNvZGVCbG9j ayBJQnVzVW5pY29kZUJsb2NrOwotK3R5cGVkZWYgc3RydWN0IF9JQnVzVW5pY29kZUJsb2NrUHJp dmF0ZSBJQnVzVW5pY29kZUJsb2NrUHJpdmF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1VuaWNv ZGVCbG9ja0NsYXNzIElCdXNVbmljb2RlQmxvY2tDbGFzczsKLSsKLSsvKioKLSsgKiBJQnVzVW5p Y29kZURhdGFMb2FkQXN5bmNGaW5pc2g6Ci0rICogQGRhdGFfbGlzdDogKHRyYW5zZmVyIGZ1bGwp IChlbGVtZW50LXR5cGUgSUJ1c1VuaWNvZGVEYXRhKToKLSsgKgotKyAqIFRoaXMgY2FsbGJhY2sg Y2FuIHJlY2VpdmUgdGhlIGxpc3Qgb2YgI0lCdXNVbmljb2RlRGF0YS4KLSsgKi8KLSt0eXBlZGVm IHZvaWQgKCpJQnVzVW5pY29kZURhdGFMb2FkQXN5bmNGaW5pc2gpIChHU0xpc3QgICpkYXRhX2xp c3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bv aW50ZXIgdXNlcl9kYXRhKTsKLSsKLSsvKioKLSsgKiBJQnVzVW5pY29kZURhdGE6Ci0rICoKLSsg KiBVbmljb2RlIGRhdGEgbGlrZXMgY29kZSwgbmFtZSwgYWxpYXMsIGJsb2NrLW5hbWUuCi0rICog WW91IGNhbiBnZXQgZXh0ZW5kZWQgdmFsdWVzIHdpdGggZ19vYmplY3RfZ2V0X3Byb3BlcnRpZXMu Ci0rICovCi0rc3RydWN0IF9JQnVzVW5pY29kZURhdGEgewotKyAgICBJQnVzU2VyaWFsaXphYmxl IHBhcmVudDsKLSsgICAgLyogaW5zdGFuY2UgbWVtYmVycyAqLwotKwotKyAgICAvKjwgcHVibGlj ID4qLwotKyAgICAvKjwgcHJpdmF0ZSA+Ki8KLSsgICAgSUJ1c1VuaWNvZGVEYXRhUHJpdmF0ZSAq cHJpdjsKLSt9OwotKwotK3N0cnVjdCBfSUJ1c1VuaWNvZGVEYXRhQ2xhc3MgewotKyAgICBJQnVz U2VyaWFsaXphYmxlQ2xhc3MgcGFyZW50OwotKyAgICAvKiBjbGFzcyBtZW1iZXJzICovCi0rfTsK LSsKLStzdHJ1Y3QgX0lCdXNVbmljb2RlQmxvY2sgewotKyAgICBJQnVzU2VyaWFsaXphYmxlIHBh cmVudDsKLSsgICAgLyogaW5zdGFuY2UgbWVtYmVycyAqLwotKwotKyAgICAvKjwgcHVibGljID4q LwotKyAgICAvKjwgcHJpdmF0ZSA+Ki8KLSsgICAgSUJ1c1VuaWNvZGVCbG9ja1ByaXZhdGUgKnBy aXY7Ci0rfTsKLSsKLStzdHJ1Y3QgX0lCdXNVbmljb2RlQmxvY2tDbGFzcyB7Ci0rICAgIElCdXNT ZXJpYWxpemFibGVDbGFzcyBwYXJlbnQ7Ci0rICAgIC8qIGNsYXNzIG1lbWJlcnMgKi8KLSt9Owot KwotK0dUeXBlICAgICAgICAgICBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfdHlwZSAgICAodm9pZCk7 Ci0rR1R5cGUgICAgICAgICAgIGlidXNfdW5pY29kZV9ibG9ja19nZXRfdHlwZSAgICh2b2lkKTsK LSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVfZGF0YV9uZXc6Ci0rICogQGZpcnN0X3Byb3BlcnR5 X25hbWU6IE5hbWUgb2YgdGhlIGZpcnN0IHByb3BlcnR5LgotKyAqIEAuLi46IHRoZSBOVUxMLXRl cm1pbmF0ZWQgYXJndW1lbnRzIG9mIHRoZSBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuCi0rICoKLSsg KiBDcmVhdGVzIGEgbmV3ICNJQnVzVW5pY29kZURhdGEuCi0rICogY29kZSBwcm9wZXJ0eSBpcyBy ZXF1aXJlZC4gZS5nLgotKyAqIGlidXNfdW5pY29kZV9kYXRhX25ldyAoImNvZGUiLCAweDMwNDIs IE5VTEwpCi0rICoKLSsgKiBSZXR1cm5zOiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c1VuaWNvZGVE YXRhLgotKyAqLwotK0lCdXNVbmljb2RlRGF0YSAqIGlidXNfdW5pY29kZV9kYXRhX25ldyAgICAg ICAoY29uc3QgZ2NoYXIgKmZpcnN0X3Byb3BlcnR5X25hbWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwotKwotKy8qKgotKyAqIGlidXNfdW5p Y29kZV9kYXRhX2dldF9jb2RlOgotKyAqIEB1bmljb2RlOiBBbiAjSUJ1c1VuaWNvZGVEYXRhCi0r ICoKLSsgKiBHZXRzIHRoZSBjb2RlIHBvaW50IGluICNJQnVzVW5pY29kZURhdGEuCi0rICoKLSsg KiBSZXR1cm5zOiBjb2RlIHByb3BlcnR5IGluICNJQnVzVW5pY29kZURhdGEKLSsgKi8KLStndW5p Y2hhciAgICAgICAgICBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfY29kZSAgKElCdXNVbmljb2RlRGF0 YSAgICAqdW5pY29kZSk7Ci0rCi0rLyoqCi0rICogaWJ1c191bmljb2RlX2RhdGFfZ2V0X25hbWU6 Ci0rICogQHVuaWNvZGU6IEFuICNJQnVzVW5pY29kZURhdGEKLSsgKgotKyAqIEdldHMgdGhlIG5h bWUgaW4gI0lCdXNVbmljb2RlRGF0YS4gSXQgc2hvdWxkIG5vdCBiZSBmcmVlZC4KLSsgKgotKyAq IFJldHVybnM6IG5hbWUgcHJvcGVydHkgaW4gI0lCdXNVbmljb2RlRGF0YQotKyAqLwotK2NvbnN0 IGdjaGFyICogICAgIGlidXNfdW5pY29kZV9kYXRhX2dldF9uYW1lICAoSUJ1c1VuaWNvZGVEYXRh ICAgICp1bmljb2RlKTsKLSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfYWxpYXM6 Ci0rICogQHVuaWNvZGU6IEFuICNJQnVzVW5pY29kZURhdGEKLSsgKgotKyAqIEdldHMgdGhlIGFs aWFzIGluICNJQnVzVW5pY29kZURhdGEuIEl0IHNob3VsZCBub3QgYmUgZnJlZWQuCi0rICoKLSsg KiBSZXR1cm5zOiBhbGlhcyBwcm9wZXJ0eSBpbiAjSUJ1c1VuaWNvZGVEYXRhCi0rICovCi0rY29u c3QgZ2NoYXIgKiAgICAgaWJ1c191bmljb2RlX2RhdGFfZ2V0X2FsaWFzIChJQnVzVW5pY29kZURh dGEgICAgKnVuaWNvZGUpOwotKwotKy8qKgotKyAqIGlidXNfdW5pY29kZV9kYXRhX2dldF9ibG9j a19uYW1lOgotKyAqIEB1bmljb2RlOiBBbiAjSUJ1c1VuaWNvZGVEYXRhCi0rICoKLSsgKiBHZXRz IHRoZSBibG9jayBuYW1lIGluICNJQnVzVW5pY29kZURhdGEuIEl0IHNob3VsZCBub3QgYmUgZnJl ZWQuCi0rICoKLSsgKiBSZXR1cm5zOiBibG9jay1uYW1lIHByb3BlcnR5IGluICNJQnVzVW5pY29k ZURhdGEKLSsgKi8KLStjb25zdCBnY2hhciAqICAgICBpYnVzX3VuaWNvZGVfZGF0YV9nZXRfYmxv Y2tfbmFtZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo SUJ1c1VuaWNvZGVEYXRhICAgICp1bmljb2RlKTsKLSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVf ZGF0YV9zZXRfYmxvY2tfbmFtZToKLSsgKiBAdW5pY29kZTogQW4gI0lCdXNVbmljb2RlRGF0YQot KyAqIEBibG9ja19uYW1lOiBBIGJsb2NrIG5hbWUKLSsgKgotKyAqIFNldHMgdGhlIGJsb2NrIG5h bWUgaW4gI0lCdXNVbmljb2RlRGF0YS4KLSsgKi8KLSt2b2lkICAgICAgICAgICAgICBpYnVzX3Vu aWNvZGVfZGF0YV9zZXRfYmxvY2tfbmFtZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoSUJ1c1VuaWNvZGVEYXRhICAgICp1bmljb2RlLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg ICpibG9ja19uYW1lKTsKLSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVfZGF0YV9zYXZlOgotKyAq IEBwYXRoOiBBIHBhdGggb2YgdGhlIHNhdmVkIFVuaWNvZGUgZGF0YS4KLSsgKiBAbGlzdDogKGVs ZW1lbnQtdHlwZSBJQnVzVW5pY29kZURhdGEpICh0cmFuc2ZlciBub25lKTogQSBsaXN0IG9mIHVu aWNvZGUKLSsgKiAgZGF0YS4KLSsgKgotKyAqIFNhdmUgdGhlIGxpc3Qgb2YgI0lCdXNVbmljb2Rl RGF0YSB0byB0aGUgY2FjaGUgZmlsZS4KLSsgKi8KLSt2b2lkICAgICAgICAgICAgICBpYnVzX3Vu aWNvZGVfZGF0YV9zYXZlICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAqcGF0aCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTTGlzdCAgICAgICAgICAg ICAqbGlzdCk7Ci0rCi0rLyoqCi0rICogaWJ1c191bmljb2RlX2RhdGFfbG9hZDoKLSsgKiBAcGF0 aDogQSBwYXRoIG9mIHRoZSBzYXZlZCBkaWN0aW9uYXJ5IGZpbGUuCi0rICogQG9iamVjdDogKG51 bGxhYmxlKTogSWYgdGhlICNHT2JqZWN0IGhhcyAidW5pY29kZS1kZXNlcmlhbGl6ZS1wcm9ncmVz cyIKLSsgKiAgICBzaWduYWwsIHRoaXMgZnVuY3Rpb24gd2lsbCBlbWl0ICh0aGUgbnVtYmVyIG9m IGRlc3JpYWxpemVkCi0rICogICAgI0lCdXNVbmljb2RlRGF0YSwgKiB0aGUgdG90YWwgbnVtYmVy IG9mICNJQnVzVW5pY29kZURhdGEpIG9mIHVpbnQgdmFsdWVzCi0rICogICAgd2l0aCB0aGF0IHNp Z25hbCBieSAxMDAgdGltZXMuIE90aGVyd2lzZSAlTlVMTC4KLSsgKgotKyAqIFJldHVybnM6IChl bGVtZW50LXR5cGUgSUJ1c1VuaWNvZGVEYXRhKSAodHJhbnNmZXIgY29udGFpbmVyKToKLSsgKiBB biAjSUJ1c1VuaWNvZGVEYXRhIGxpc3QgbG9hZGVkIGZyb20gdGhlIHNhdmVkIGNhY2hlIGZpbGUu Ci0rICovCi0rR1NMaXN0ICogICAgICAgICAgaWJ1c191bmljb2RlX2RhdGFfbG9hZCAgICAgIChj b25zdCBnY2hhciAgICAgICAgKnBhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHT2JqZWN0ICAgICAgICAgICAgKm9iamVjdCk7Ci0rCi0rLyoqCi0r ICogaWJ1c191bmljb2RlX2RhdGFfbG9hZF9hc3luYzoKLSsgKiBAcGF0aDogQSBwYXRoIG9mIHRo ZSBzYXZlZCBkaWN0aW9uYXJ5IGZpbGUuCi0rICogQG9iamVjdDogKG51bGxhYmxlKTogSWYgdGhl ICNHT2JqZWN0IGhhcyAidW5pY29kZS1kZXNlcmlhbGl6ZS1wcm9ncmVzcyIKLSsgKiAgICBzaWdu YWwsIHRoaXMgZnVuY3Rpb24gd2lsbCBlbWl0ICh0aGUgbnVtYmVyIG9mIGRlc3JpYWxpemVkCi0r ICogICAgI0lCdXNVbmljb2RlRGF0YSwgKiB0aGUgdG90YWwgbnVtYmVyIG9mICNJQnVzVW5pY29k ZURhdGEpIG9mIHVpbnQgdmFsdWVzCi0rICogICAgd2l0aCB0aGF0IHNpZ25hbCBieSAxMDAgdGlt ZXMuIE90aGVyd2lzZSAlTlVMTC4KLSsgKiBAY2FuY2VsbGFibGU6IGNhbmNlbGxhYmxlLgotKyAq IEBjYWxsYmFjazogKHNjb3BlIG5vdGlmaWVkKTogSUJ1c1VuaWNvZGVEYXRhTG9hZEFzeW5jRmlu aXNoLgotKyAqIEB1c2VyX2RhdGE6IFVzZXIgZGF0YS4KLSsgKgotKyAqIElCdXNVbmljb2RlRGF0 YUxvYWRBc3luY0ZpbmlzaCBjYW4gcmVjZWl2ZSB0aGUgbGlzdCBvZiAjSUJ1c1VuaWNvZGVEYXRh LgotKyAqLwotK3ZvaWQgICAgICAgICAgICAgIGlidXNfdW5pY29kZV9kYXRhX2xvYWRfYXN5bmMK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdj aGFyICAgICAgICAqcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdPYmplY3QgICAgICAgICAgICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICpjYW5jZWxs YWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC dXNVbmljb2RlRGF0YUxvYWRBc3luY0ZpbmlzaAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAg ICAgICAgdXNlcl9kYXRhKTsKLSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVfYmxvY2tfbmV3Ogot KyAqIEBmaXJzdF9wcm9wZXJ0eV9uYW1lOiBOYW1lIG9mIHRoZSBmaXJzdCBwcm9wZXJ0eS4KLSsg KiBALi4uOiB0aGUgTlVMTC10ZXJtaW5hdGVkIGFyZ3VtZW50cyBvZiB0aGUgcHJvcGVydGllcyBh bmQgdmFsdWVzLgotKyAqCi0rICogQ3JlYXRlcyBhIG5ldyAjSUJ1c1VuaWNvZGVCbG9jay4KLSsg KiBibG9jayBwcm9wZXJ0eSBpcyByZXF1aXJlZC4gZS5nLgotKyAqIGlidXNfdW5pY29kZV9ibG9j a19uZXcgKCJzdGFydCIsIDB4MDAwMCwgImVuZCIsICIweDAwN2YiLCAibmFtZSIsICJiYXNpYyIs Ci0rICogTlVMTCkKLSsgKgotKyAqIFJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVkICNJQnVzVW5p Y29kZUJsb2NrLgotKyAqLwotK0lCdXNVbmljb2RlQmxvY2sgKmlidXNfdW5pY29kZV9ibG9ja19u ZXcgICAgICAoY29uc3QgZ2NoYXIgKmZpcnN0X3Byb3BlcnR5X25hbWUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwotKwotKy8qKgotKyAqIGli dXNfdW5pY29kZV9ibG9ja19nZXRfc3RhcnQ6Ci0rICogQGJsb2NrOiBBbiAjSUJ1c1VuaWNvZGVE YXRhCi0rICoKLSsgKiBHZXRzIHRoZSBzdGFydCBjb2RlIHBvaW50IGluICNJQnVzVW5pY29kZUJs b2NrLgotKyAqCi0rICogUmV0dXJuczogc3RhcnQgcHJvcGVydHkgaW4gI0lCdXNVbmljb2RlQmxv Y2sKLSsgKi8KLStndW5pY2hhciAgICAgICAgICBpYnVzX3VuaWNvZGVfYmxvY2tfZ2V0X3N0YXJ0 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzVW5p Y29kZUJsb2NrICAgKmJsb2NrKTsKLSsKLSsvKioKLSsgKiBpYnVzX3VuaWNvZGVfYmxvY2tfZ2V0 X2VuZDoKLSsgKiBAYmxvY2s6IEFuICNJQnVzVW5pY29kZURhdGEKLSsgKgotKyAqIEdldHMgdGhl IGVuZCBjb2RlIHBvaW50IGluICNJQnVzVW5pY29kZUJsb2NrLgotKyAqCi0rICogUmV0dXJuczog ZW5kIHByb3BlcnR5IGluICNJQnVzVW5pY29kZUJsb2NrCi0rICovCi0rZ3VuaWNoYXIgICAgICAg ICAgaWJ1c191bmljb2RlX2Jsb2NrX2dldF9lbmQKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKElCdXNVbmljb2RlQmxvY2sgICAqYmxvY2spOwotKwotKy8q KgotKyAqIGlidXNfdW5pY29kZV9ibG9ja19nZXRfbmFtZToKLSsgKiBAYmxvY2s6IEFuICNJQnVz VW5pY29kZUJsb2NrCi0rICoKLSsgKiBHZXRzIHRoZSBuYW1lIGluICNJQnVzVW5pY29kZUJsb2Nr LiBJdCBzaG91bGQgbm90IGJlIGZyZWVkLgotKyAqCi0rICogUmV0dXJuczogbmFtZSBwcm9wZXJ0 eSBpbiAjSUJ1c1VuaWNvZGVCbG9jawotKyAqLwotK2NvbnN0IGdjaGFyICogICAgIGlidXNfdW5p Y29kZV9ibG9ja19nZXRfbmFtZSAoSUJ1c1VuaWNvZGVCbG9jayAgICpibG9jayk7Ci0rCi0rLyoq Ci0rICogaWJ1c191bmljb2RlX2Jsb2NrX3NhdmU6Ci0rICogQHBhdGg6IEEgcGF0aCBvZiB0aGUg c2F2ZWQgVW5pY29kZSBibG9jay4KLSsgKiBAbGlzdDogKGVsZW1lbnQtdHlwZSBJQnVzVW5pY29k ZUJsb2NrKSAodHJhbnNmZXIgbm9uZSk6IEEgbGlzdCBvZiB1bmljb2RlCi0rICogIGJsb2NrLgot KyAqCi0rICogU2F2ZSB0aGUgbGlzdCBvZiAjSUJ1c1VuaWNvZGVCbG9jayB0byB0aGUgY2FjaGUg ZmlsZS4KLSsgKi8KLSt2b2lkICAgICAgICAgICAgICBpYnVzX3VuaWNvZGVfYmxvY2tfc2F2ZSAg ICAgKGNvbnN0IGdjaGFyICAgICAgICAqcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdTTGlzdCAgICAgICAgICAgICAqbGlzdCk7Ci0rCi0rLyoq Ci0rICogaWJ1c191bmljb2RlX2Jsb2NrX2xvYWQ6Ci0rICogQHBhdGg6IEEgcGF0aCBvZiB0aGUg c2F2ZWQgZGljdGlvbmFyeSBmaWxlLgotKyAqCi0rICogUmV0dXJuczogKGVsZW1lbnQtdHlwZSBJ QnVzVW5pY29kZUJsb2NrKSAodHJhbnNmZXIgY29udGFpbmVyKToKLSsgKiBBbiAjSUJ1c1VuaWNv ZGVCbG9jayBsaXN0IGxvYWRlZCBmcm9tIHRoZSBzYXZlZCBjYWNoZSBmaWxlLgotKyAqLwotK0dT TGlzdCAqICAgICAgICAgIGlidXNfdW5pY29kZV9ibG9ja19sb2FkICAgICAoY29uc3QgZ2NoYXIg ICAgICAgICpwYXRoKTsKLSsKLStHX0VORF9ERUNMUwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL3Ny Yy9pYnVzdW5pY29kZWdlbi5oIGIvc3JjL2lidXN1bmljb2RlZ2VuLmgKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uYzYxM2I4MWIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Ny Yy9pYnVzdW5pY29kZWdlbi5oCi1AQCAtMCwwICsxLDExNTEgQEAKLSsvKiAtKi0gbW9kZTogQzsg Yy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0rLyogdmlt OnNldCBldCBzdHM9NDogKi8KLSsvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotKyAqIENvcHlyaWdo dCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsg KiBDb3B5cmlnaHQgKEMpIDIwMTggUmVkIEhhdCwgSW5jLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK LSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKLSsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x MzAxCi0rICogVVNBCi0rICovCi0rCi0rCi0rLyogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB1 bmljb2RlLXBhcnNlci5jLiAqLwotK2luY2x1ZGUgPGdsaWIvZ2kxOG4uaD4KLSsKLSsjaWZuZGVm IF9fSUJVU19VTklDT0RFX0dFTl9IXwotKyNkZWZpbmUgX19JQlVTX1VOSUNPREVfR0VOX0hfCi0r Y29uc3Qgc3RhdGljIGNoYXIgKnVuaWNvZGVfYmxvY2tzW10gPSB7Ci0rICAgIC8qIFRSQU5TTEFU T1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRo Ci0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1z Z21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJCYXNp YyBMYXRpbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiTGF0aW4tMSBTdXBwbGVtZW50IiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJMYXRpbiBFeHRlbmRlZC1BIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVm ZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAg ICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1h cC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJMYXRpbiBFeHRlbmRlZC1CIiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJJUEEgRXh0ZW5zaW9ucyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1p Z2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAg ICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBn dWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU3BhY2luZyBNb2RpZmll ciBMZXR0ZXJzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRy YW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUg Zm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVz LnBvIGlidXMucG90ICovCi0rICAgIE5fKCJDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MiKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIkdyZWVrIGFuZCBDb3B0aWMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkN5cmlsbGljIiks Ci0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBm cm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNv bW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90 ICovCi0rICAgIE5fKCJDeXJpbGxpYyBTdXBwbGVtZW50IiksCi0rICAgIC8qIFRSQU5TTEFUT1JT OiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0r ICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21l cmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJBcm1lbmlh biIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiSGVicmV3IiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWln aHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAg ICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1 Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJBcmFiaWMiKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIlN5cmlhYyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQXJhYmljIFN1cHBsZW1lbnQiKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIlRoYWFuYSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTktvIiksCi0rICAgIC8qIFRSQU5TTEFUT1JT OiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0r ICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21l cmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTYW1hcml0 YW4iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIk1hbmRhaWMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlN5cmlhYyBTdXBwbGVt ZW50IiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0 aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93 aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGli dXMucG90ICovCi0rICAgIE5fKCJBcmFiaWMgRXh0ZW5kZWQtQSIpLAotKyAgICAvKiBUUkFOU0xB VE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0 aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBt c2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiRGV2 YW5hZ2FyaSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiQmVuZ2FsaSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzog WW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAg ICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJn ZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiR3VybXVraGki KSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25z IGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcg Y29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5w b3QgKi8KLSsgICAgTl8oIkd1amFyYXRpIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWln aHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAg ICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1 Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJPcml5YSIpLAotKyAgICAv KiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNo YXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgot KyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAg ICBOXygiVGFtaWwiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlRlbHVndSIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiS2FubmFk YSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiTWFsYXlhbGFtIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3Ug bWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAg ICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1D IGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTaW5oYWxhIiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJUaGFpIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJMYW8iKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlRpYmV0 YW4iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIk15YW5tYXIiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkdlb3JnaWFuIiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJIYW5ndWwgSmFtbyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0 IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAg ICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNo YXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiRXRoaW9waWMiKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIkV0aGlvcGljIFN1cHBsZW1lbnQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNoZXJva2VlIiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJVbmlmaWVkIENhbmFkaWFuIEFib3JpZ2luYWwgU3lsbGFiaWNzIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJPZ2hhbSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiUnVuaWMiKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlRhZ2Fs b2ciKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIkhhbnVub28iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkJ1aGlkIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJUYWdiYW53YSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiS2htZXIiKSwKLSsgICAgLyogVFJBTlNM QVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAg bXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk1v bmdvbGlhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxh YmljcyBFeHRlbmRlZCIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTGltYnUiKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlRhaSBM ZSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiTmV3IFRhaSBMdWUiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIktobWVyIFN5bWJv bHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIkJ1Z2luZXNlIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3Ug bWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAg ICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1D IGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJUYWkgVGhhbSIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIEV4dGVuZGVkIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJCYWxpbmVzZSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU3VuZGFuZXNlIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJCYXRhayIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiTGVwY2hhIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZ b3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAg ICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdl IC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJPbCBDaGlraSIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiQ3lyaWxsaWMgRXh0ZW5kZWQtQyIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU3VuZGFu ZXNlIFN1cHBsZW1lbnQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0 aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAg IHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBv IGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlZlZGljIEV4dGVuc2lvbnMiKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIlBob25ldGljIEV4dGVuc2lvbnMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlBob25ldGljIEV4dGVu c2lvbnMgU3VwcGxlbWVudCIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ29tYmluaW5nIERpYWNyaXRpY2FsIE1h cmtzIFN1cHBsZW1lbnQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0 aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAg IHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBv IGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkxhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwi KSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25z IGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcg Y29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5w b3QgKi8KLSsgICAgTl8oIkdyZWVrIEV4dGVuZGVkIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZ b3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAg ICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdl IC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJHZW5lcmFsIFB1 bmN0dWF0aW9uIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRy YW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUg Zm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVz LnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTdXBlcnNjcmlwdHMgYW5kIFN1YnNjcmlwdHMiKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIkN1cnJlbmN5IFN5bWJvbHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNvbWJpbmluZyBE aWFjcml0aWNhbCBNYXJrcyBmb3IgU3ltYm9scyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTGV0dGVybGlrZSBT eW1ib2xzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJOdW1iZXIgRm9ybXMiKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkFycm93 cyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiTWF0aGVtYXRpY2FsIE9wZXJhdG9ycyIpLAotKyAgICAvKiBUUkFO U0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAg d2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAg ICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygi TWlzY2VsbGFuZW91cyBUZWNobmljYWwiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdo dCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAg ICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3Vj aGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNvbnRyb2wgUGljdHVyZXMi KSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25z IGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcg Y29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5w b3QgKi8KLSsgICAgTl8oIk9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJFbmNsb3NlZCBBbHBoYW51bWVyaWNzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3Ug bWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAg ICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1D IGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJCb3ggRHJhd2luZyIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiQmxvY2sgRWxlbWVudHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkdlb21ldHJpYyBT aGFwZXMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNs YXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xs b3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8g aWJ1cy5wb3QgKi8KLSsgICAgTl8oIk1pc2NlbGxhbmVvdXMgU3ltYm9scyIpLAotKyAgICAvKiBU UkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJt YXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAg ICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBO XygiRGluZ2JhdHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk1pc2NlbGxhbmVvdXMgTWF0aGVtYXRpY2FsIFN5 bWJvbHMtQSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiU3VwcGxlbWVudGFsIEFycm93cy1BIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJCcmFpbGxlIFBhdHRlcm5zIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQg cmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAg ICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hh cm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTdXBwbGVtZW50YWwgQXJyb3dz LUIiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIk1pc2NlbGxhbmVvdXMgTWF0aGVtYXRpY2FsIFN5bWJvbHMtQiIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiU3VwcGxlbWVudGFsIE1hdGhlbWF0aWNhbCBPcGVyYXRvcnMiKSwKLSsg ICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20g Z3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFu ZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8K LSsgICAgTl8oIk1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgQXJyb3dzIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJHbGFnb2xpdGljIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhl IHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0 aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBp YnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJMYXRpbiBFeHRlbmRlZC1DIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJDb3B0aWMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkdlb3JnaWFuIFN1cHBsZW1lbnQiKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIlRpZmluYWdoIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJFdGhpb3BpYyBFeHRlbmRlZCIpLAotKyAg ICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBn dWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5k OgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwot KyAgICBOXygiQ3lyaWxsaWMgRXh0ZW5kZWQtQSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU3VwcGxlbWVudGFs IFB1bmN0dWF0aW9uIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhl IHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0 aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBp YnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJDSksgUmFkaWNhbHMgU3VwcGxlbWVudCIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiS2FuZ3hpIFJhZGljYWxzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3Ug bWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAg ICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1D IGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJJZGVvZ3JhcGhpYyBE ZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQg cmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAg ICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hh cm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJDSksgU3ltYm9scyBhbmQgUHVu Y3R1YXRpb24iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJh bnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBm b2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMu cG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkhpcmFnYW5hIiksCi0rICAgIC8qIFRSQU5TTEFUT1JT OiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0r ICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21l cmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJLYXRha2Fu YSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiQm9wb21vZm8iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkhhbmd1bCBDb21wYXRp YmlsaXR5IEphbW8iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkthbmJ1biIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQm9wb21v Zm8gRXh0ZW5kZWQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNKSyBTdHJva2VzIiksCi0rICAgIC8qIFRSQU5T TEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3 aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAg IG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJL YXRha2FuYSBQaG9uZXRpYyBFeHRlbnNpb25zIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3Ug bWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAg ICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1D IGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJFbmNsb3NlZCBDSksg TGV0dGVycyBhbmQgTW9udGhzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVm ZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAg ICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1h cC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJDSksgQ29tcGF0aWJpbGl0eSIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQSIpLAotKyAgICAv KiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNo YXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgot KyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAg ICBOXygiWWlqaW5nIEhleGFncmFtIFN5bWJvbHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNKSyBVbmlmaWVk IElkZW9ncmFwaHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIllpIFN5bGxhYmxlcyIpLAotKyAgICAvKiBUUkFO U0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAg d2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAg ICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygi WWkgUmFkaWNhbHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkxpc3UiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6 IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsg ICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVy Z2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlZhaSIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiQ3lyaWxsaWMgRXh0ZW5kZWQtQiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzog WW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAg ICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJn ZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQmFtdW0iKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIk1vZGlmaWVyIFRvbmUgTGV0dGVycyIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTGF0aW4g RXh0ZW5kZWQtRCIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0 cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhl IGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1 cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU3lsb3RpIE5hZ3JpIiksCi0rICAgIC8qIFRSQU5T TEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3 aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAg IG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJD b21tb24gSW5kaWMgTnVtYmVyIEZvcm1zIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWln aHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAg ICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1 Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJQaGFncy1wYSIpLAotKyAg ICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBn dWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5k OgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwot KyAgICBOXygiU2F1cmFzaHRyYSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJl ZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAg ICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJt YXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiRGV2YW5hZ2FyaSBFeHRlbmRlZCIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiS2F5YWggTGkiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdo dCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAg ICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3Vj aGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlJlamFuZyIpLAotKyAgICAv KiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNo YXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgot KyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAg ICBOXygiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiSmF2YW5lc2UiKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIk15YW5tYXIgRXh0ZW5kZWQtQiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzog WW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAg ICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJn ZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ2hhbSIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiTXlhbm1hciBFeHRlbmRlZC1BIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZ b3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAg ICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdl IC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJUYWkgVmlldCIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiTWVldGVpIE1heWVrIEV4dGVuc2lvbnMiKSwKLSsgICAgLyogVFJBTlNM QVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAg bXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkV0 aGlvcGljIEV4dGVuZGVkLUEiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZl ciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAg ICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFw LnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkxhdGluIEV4dGVuZGVkLUUiKSwKLSsg ICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20g Z3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFu ZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8K LSsgICAgTl8oIkNoZXJva2VlIFN1cHBsZW1lbnQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk1lZXRlaSBNYXll ayIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiSGFuZ3VsIFN5bGxhYmxlcyIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiSGFuZ3Vs IEphbW8gRXh0ZW5kZWQtQiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiSGlnaCBTdXJyb2dhdGVzIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJIaWdoIFByaXZhdGUgVXNlIFN1cnJvZ2F0ZXMiKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkxvdyBT dXJyb2dhdGVzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRy YW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUg Zm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVz LnBvIGlidXMucG90ICovCi0rICAgIE5fKCJQcml2YXRlIFVzZSBBcmVhIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZ b3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAg ICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdl IC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJBbHBoYWJldGlj IFByZXNlbnRhdGlvbiBGb3JtcyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJl ZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAg ICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJt YXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQXJhYmljIFByZXNlbnRhdGlvbiBG b3Jtcy1BIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJWYXJpYXRpb24gU2VsZWN0b3JzIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJWZXJ0aWNhbCBGb3JtcyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ29tYmluaW5nIEhhbGYgTWFya3MiKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIkNKSyBDb21wYXRpYmlsaXR5IEZvcm1zIiksCi0rICAgIC8qIFRSQU5TTEFU T1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRo Ci0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1z Z21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTbWFs bCBGb3JtIFZhcmlhbnRzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1z LUIiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIkhhbGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJTcGVjaWFscyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTGluZWFyIEIgU3lsbGFiYXJ5IiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJMaW5lYXIgQiBJZGVvZ3JhbXMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkFlZ2VhbiBOdW1i ZXJzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0 aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93 aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGli dXMucG90ICovCi0rICAgIE5fKCJBbmNpZW50IEdyZWVrIE51bWJlcnMiKSwKLSsgICAgLyogVFJB TlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFw IHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAg ICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8o IkFuY2llbnQgU3ltYm9scyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiUGhhaXN0b3MgRGlzYyIpLAotKyAgICAv KiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNo YXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgot KyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAg ICBOXygiTHljaWFuIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhl IHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0 aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBp YnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJDYXJpYW4iKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNvcHRp YyBFcGFjdCBOdW1iZXJzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJPbGQgSXRhbGljIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJHb3RoaWMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJh bnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBm b2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMu cG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk9sZCBQZXJtaWMiKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlVnYXJp dGljIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0 aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93 aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGli dXMucG90ICovCi0rICAgIE5fKCJPbGQgUGVyc2lhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzog WW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAg ICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJn ZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiRGVzZXJldCIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiU2hhdmlhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0 IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAg ICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNo YXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiT3NtYW55YSIpLAotKyAgICAv KiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNo YXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgot KyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAg ICBOXygiT3NhZ2UiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkVsYmFzYW4iKSwKLSsgICAgLyogVFJBTlNMQVRP UlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgK LSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNn bWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkNhdWNh c2lhbiBBbGJhbmlhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiTGluZWFyIEEiKSwKLSsgICAgLyogVFJBTlNM QVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAg bXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkN5 cHJpb3QgU3lsbGFiYXJ5IiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJJbXBlcmlhbCBBcmFtYWljIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJQYWxteXJlbmUiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZl ciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAg ICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFw LnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk5hYmF0YWVhbiIpLAotKyAgICAvKiBU UkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJt YXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAg ICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBO XygiSGF0cmFuIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRy YW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUg Zm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVz LnBvIGlidXMucG90ICovCi0rICAgIE5fKCJQaG9lbmljaWFuIiksCi0rICAgIC8qIFRSQU5TTEFU T1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRo Ci0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1z Z21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJMeWRp YW4iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIk1lcm9pdGljIEhpZXJvZ2x5cGhzIiksCi0rICAgIC8qIFRSQU5T TEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3 aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAg IG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJN ZXJvaXRpYyBDdXJzaXZlIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJLaGFyb3NodGhpIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJPbGQgU291dGggQXJhYmlhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJl ZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAg ICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJt YXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiT2xkIE5vcnRoIEFyYWJpYW4iKSwK LSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZy b20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29t bWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3Qg Ki8KLSsgICAgTl8oIk1hbmljaGFlYW4iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdo dCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAg ICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3Vj aGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkF2ZXN0YW4iKSwKLSsgICAg LyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3Vj aGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK LSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsg ICAgTl8oIkluc2NyaXB0aW9uYWwgUGFydGhpYW4iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkluc2NyaXB0aW9u YWwgUGFobGF2aSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0 cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhl IGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1 cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiUHNhbHRlciBQYWhsYXZpIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJPbGQgVHVya2ljIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhl IHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0 aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBp YnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJPbGQgSHVuZ2FyaWFuIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJSdW1pIE51bWVyYWwgU3ltYm9scyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0 IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAg ICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNo YXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQnJhaG1pIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJLYWl0aGkiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlNvcmEgU29tcGVuZyIpLAotKyAgICAvKiBUUkFO U0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAg d2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAg ICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygi Q2hha21hIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJNYWhhamFuaSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzog WW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAg ICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJn ZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU2hhcmFkYSIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiU2luaGFsYSBBcmNoYWljIE51bWJlcnMiKSwKLSsgICAgLyogVFJBTlNM QVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAg bXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkto b2praSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xh dGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxv d2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBp YnVzLnBvdCAqLwotKyAgICBOXygiTXVsdGFuaSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiS2h1ZGF3YWRpIiks Ci0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBm cm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNv bW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90 ICovCi0rICAgIE5fKCJHcmFudGhhIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQg cmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAg ICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hh cm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJOZXdhIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJUaXJodXRhIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRy YW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUg Zm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVz LnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTaWRkaGFtIiksCi0rICAgIC8qIFRSQU5TTEFUT1JT OiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0r ICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21l cmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJNb2RpIiks Ci0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBm cm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNv bW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90 ICovCi0rICAgIE5fKCJNb25nb2xpYW4gU3VwcGxlbWVudCIpLAotKyAgICAvKiBUUkFOU0xBVE9S UzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAot KyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dt ZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiVGFrcmki KSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25z IGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcg Y29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5w b3QgKi8KLSsgICAgTl8oIkFob20iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCBy ZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAg ICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFy bWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIldhcmFuZyBDaXRpIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJaYW5hYmF6YXIgU3F1YXJlIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWln aHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAg ICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1 Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJTb3lvbWJvIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJQYXUgQ2luIEhhdSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJl ZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAg ICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJt YXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQmhhaWtzdWtpIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJNYXJjaGVuIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhl IHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0 aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBp YnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJNYXNhcmFtIEdvbmRpIiksCi0rICAgIC8qIFRS QU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1h cCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAg ICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5f KCJDdW5laWZvcm0iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUg dHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRo ZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGli dXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkN1bmVpZm9ybSBOdW1iZXJzIGFuZCBQdW5jdHVh dGlvbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xh dGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxv d2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBp YnVzLnBvdCAqLwotKyAgICBOXygiRWFybHkgRHluYXN0aWMgQ3VuZWlmb3JtIiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJFZ3lwdGlhbiBIaWVyb2dseXBocyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1p Z2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAg ICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBn dWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQW5hdG9saWFuIEhpZXJv Z2x5cGhzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJCYW11bSBTdXBwbGVtZW50IiksCi0rICAgIC8qIFRSQU5T TEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3 aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAg IG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJN cm8iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRp b25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dp bmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1 cy5wb3QgKi8KLSsgICAgTl8oIkJhc3NhIFZhaCIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiUGFoYXdoIEhtb25n IiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9u cyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5n IGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMu cG90ICovCi0rICAgIE5fKCJNaWFvIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQg cmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAg ICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hh cm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJJZGVvZ3JhcGhpYyBTeW1ib2xz IGFuZCBQdW5jdHVhdGlvbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiVGFuZ3V0IiksCi0rICAgIC8qIFRSQU5T TEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3 aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAg IG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJU YW5ndXQgQ29tcG9uZW50cyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVy IHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAg ICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAu cG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiS2FuYSBTdXBwbGVtZW50IiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJLYW5hIEV4dGVuZGVkLUEiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdo dCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAg ICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3Vj aGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk51c2h1IiksCi0rICAgIC8q IFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hh cm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r ICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAg IE5fKCJEdXBsb3lhbiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiU2hvcnRoYW5kIEZvcm1hdCBDb250cm9scyIp LAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMg ZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBj b21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBv dCAqLwotKyAgICBOXygiQnl6YW50aW5lIE11c2ljYWwgU3ltYm9scyIpLAotKyAgICAvKiBUUkFO U0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAg d2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAg ICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygi TXVzaWNhbCBTeW1ib2xzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJBbmNpZW50IEdyZWVrIE11c2ljYWwgTm90 YXRpb24iKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNs YXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xs b3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8g aWJ1cy5wb3QgKi8KLSsgICAgTl8oIlRhaSBYdWFuIEppbmcgU3ltYm9scyIpLAotKyAgICAvKiBU UkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJt YXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAg ICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBO XygiQ291bnRpbmcgUm9kIE51bWVyYWxzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWln aHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAg ICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1 Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJNYXRoZW1hdGljYWwgQWxw aGFudW1lcmljIFN5bWJvbHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZl ciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAg ICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFw LnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlN1dHRvbiBTaWduV3JpdGluZyIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiR2xhZ29saXRpYyBTdXBwbGVtZW50IiksCi0rICAgIC8qIFRSQU5TTEFUT1JT OiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0r ICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21l cmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJNZW5kZSBL aWtha3VpIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJBZGxhbSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQXJhYmljIE1hdGhl bWF0aWNhbCBBbHBoYWJldGljIFN5bWJvbHMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAg ICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMg Z3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIk1haGpvbmcgVGlsZXMi KSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25z IGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcg Y29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5w b3QgKi8KLSsgICAgTl8oIkRvbWlubyBUaWxlcyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiUGxheWluZyBDYXJk cyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiRW5jbG9zZWQgQWxwaGFudW1lcmljIFN1cHBsZW1lbnQiKSwKLSsg ICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20g Z3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFu ZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8K LSsgICAgTl8oIkVuY2xvc2VkIElkZW9ncmFwaGljIFN1cHBsZW1lbnQiKSwKLSsgICAgLyogVFJB TlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFw IHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAg ICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8o Ik1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgUGljdG9ncmFwaHMiKSwKLSsgICAgLyogVFJBTlNM QVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAg bXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIkVt b3RpY29ucyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiT3JuYW1lbnRhbCBEaW5nYmF0cyIpLAotKyAgICAvKiBU UkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJt YXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAg ICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBO XygiVHJhbnNwb3J0IGFuZCBNYXAgU3ltYm9scyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91 IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAt QyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQWxjaGVtaWNhbCBT eW1ib2xzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5z bGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9s bG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBv IGlidXMucG90ICovCi0rICAgIE5fKCJHZW9tZXRyaWMgU2hhcGVzIEV4dGVuZGVkIiksCi0rICAg IC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1 Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICovCi0r ICAgIE5fKCJTdXBwbGVtZW50YWwgQXJyb3dzLUMiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlv dSBtaWdodCByZWZlciB0aGUgdHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAg ICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2Ug LUMgZ3VjaGFybWFwLnBvIGlidXMucG8gaWJ1cy5wb3QgKi8KLSsgICAgTl8oIlN1cHBsZW1lbnRh bCBTeW1ib2xzIGFuZCBQaWN0b2dyYXBocyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1p Z2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAg ICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBn dWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRl b2dyYXBocyBFeHRlbnNpb24gQiIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJl ZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAg ICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJt YXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRlb2dyYXBo cyBFeHRlbnNpb24gQyIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRo ZSB0cmFuc2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAg dGhlIGZvbGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8g aWJ1cy5wbyBpYnVzLnBvdCAqLwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRl bnNpb24gRCIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFu c2xhdGlvbnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZv bGxvd2luZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5w byBpYnVzLnBvdCAqLwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24g RSIpLAotKyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlv bnMgZnJvbSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2lu ZyBjb21tYW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVz LnBvdCAqLwotKyAgICBOXygiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gRiIpLAot KyAgICAvKiBUUkFOU0xBVE9SUzogWW91IG1pZ2h0IHJlZmVyIHRoZSB0cmFuc2xhdGlvbnMgZnJv bSBndWNoYXJtYXAgd2l0aAotKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21t YW5kOgotKyAgICAgICBtc2dtZXJnZSAtQyBndWNoYXJtYXAucG8gaWJ1cy5wbyBpYnVzLnBvdCAq LwotKyAgICBOXygiQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyBTdXBwbGVtZW50IiksCi0r ICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBmcm9t IGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1h bmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90ICov Ci0rICAgIE5fKCJUYWdzIiksCi0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIg dGhlIHRyYW5zbGF0aW9ucyBmcm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAg ICB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5w byBpYnVzLnBvIGlidXMucG90ICovCi0rICAgIE5fKCJWYXJpYXRpb24gU2VsZWN0b3JzIFN1cHBs ZW1lbnQiKSwKLSsgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgdHJhbnNs YXRpb25zIGZyb20gZ3VjaGFybWFwIHdpdGgKLSsgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xs b3dpbmcgY29tbWFuZDoKLSsgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMucG8g aWJ1cy5wb3QgKi8KLSsgICAgTl8oIlN1cHBsZW1lbnRhcnkgUHJpdmF0ZSBVc2UgQXJlYS1BIiks Ci0rICAgIC8qIFRSQU5TTEFUT1JTOiBZb3UgbWlnaHQgcmVmZXIgdGhlIHRyYW5zbGF0aW9ucyBm cm9tIGd1Y2hhcm1hcCB3aXRoCi0rICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNv bW1hbmQ6Ci0rICAgICAgIG1zZ21lcmdlIC1DIGd1Y2hhcm1hcC5wbyBpYnVzLnBvIGlidXMucG90 ICovCi0rICAgIE5fKCJTdXBwbGVtZW50YXJ5IFByaXZhdGUgVXNlIEFyZWEtQiIpLAotK307Ci0r I2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL3VuaWNvZGUtcGFyc2VyLmMgYi9zcmMvdW5pY29kZS1w YXJzZXIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi5lOThjNmQ1Zgot LS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3VuaWNvZGUtcGFyc2VyLmMKLUBAIC0wLDAgKzEsNTAy IEBACi0rLyogLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2Rl OiBuaWw7IC0qLSAqLwotKy8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0rLyogaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1 aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4K LSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQotKyAqIFVTQQotKyAqLwotKwotKyNpZmRlZiBIQVZF X0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxn bGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsj aWZkZWYgSEFWRV9MT0NBTEVfSAotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsjZW5kaWYKLSsKLSsj aW5jbHVkZSAiaWJ1c3VuaWNvZGUuaCIKLSsKLSsjZGVmaW5lIE5BTUVTX0xJU1RfU1VCSkVDVCAi VGhlIFVuaWNvZGUgU3RhbmRhcmQiCi0rI2RlZmluZSBCTE9DS1NfU1VCSkVDVCAiQmxvY2tzLSIK LSsKLSsvKiBUaGlzIGZpbGUgaGFzIDIxIGxpbmVzIGFib3V0IHRoZSBsaWNlbnNlIGF0IHRoZSB0 b3Agb2YgdGhlIGZpbGUuICovCi0rI2RlZmluZSBMSUNFTlNFX0xJTkVTIDIxCi0rCi0rdHlwZWRl ZiBlbnVtCi0rewotKyAgICBVQ0RfTkFNRVNfTElTVCwKLSsgICAgVUNEX0JMT0NLUwotK30gVUNE VHlwZTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBfVW5pY29kZURhdGEgVW5pY29kZURhdGE7Ci0rdHlw ZWRlZiBzdHJ1Y3QgX1VuaWNvZGVEYXRhSW5kZXggVW5pY29kZURhdGFJbmRleDsKLSsKLStzdHJ1 Y3QgX1VuaWNvZGVEYXRhewotKyAgICBndW5pY2hhciBjb2RlOwotKyAgICBnY2hhciAgICpuYW1l OwotKyAgICBnY2hhciAgICphbGlhczsKLSsgICAgZ3VuaWNoYXIgc3RhcnQ7Ci0rICAgIGd1bmlj aGFyIGVuZDsKLSsgICAgR1NMaXN0ICAqbGlzdDsKLSt9OwotKwotK3N0cnVjdCBfVW5pY29kZURh dGFJbmRleCB7Ci0rICAgIGdjaGFyICppbmRleDsKLSsgICAgVW5pY29kZURhdGEgKmRhdGFfbGlz dDsKLSt9OwotKwotK3N0YXRpYyBnY2hhciAqdW5pY29kZV92ZXJzaW9uOwotKwotK3N0YXRpYyB2 b2lkCi0rdW5pY29kZV9kYXRhX25ld19vYmplY3QgKFVuaWNvZGVEYXRhICpkYXRhKQotK3sKLSsg ICAgZ19yZXR1cm5faWZfZmFpbCAoZGF0YSAhPSBOVUxMKTsKLSsgICAgaWYgKCFkYXRhLT5uYW1l KSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJObyBuYW1lIGluIFUrJTA0WCIsIGRhdGEtPmNvZGUp OwotKyAgICB9Ci0rICAgIElCdXNVbmljb2RlRGF0YSAqdW5pY29kZSA9Ci0rICAgICAgICAgICAg aWJ1c191bmljb2RlX2RhdGFfbmV3ICgiY29kZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhLT5jb2RlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm5hbWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bmFt ZSA/IGdfc3RyZHVwIChkYXRhLT5uYW1lKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6IGdfc3RyZHVwICgiIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYWxpYXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YS0+YWxpYXMgPyBnX3N0cmR1cCAoZGF0YS0+YWxpYXMpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogZ19zdHJkdXAgKCIiKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKyAgICBkYXRhLT5saXN0ID0gZ19zbGlzdF9h cHBlbmQgKGRhdGEtPmxpc3QsIHVuaWNvZGUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3VuaWNv ZGVfYmxvY2tfbmV3X29iamVjdCAoVW5pY29kZURhdGEgKmRhdGEpCi0rewotKyAgICBnX3JldHVy bl9pZl9mYWlsIChkYXRhICE9IE5VTEwpOwotKyAgICBpZiAoIWRhdGEtPm5hbWUpIHsKLSsgICAg ICAgIGdfd2FybmluZyAoIk5vIG5hbWUgaW4gVSslMDRYIiwgZGF0YS0+c3RhcnQpOwotKyAgICB9 Ci0rICAgIElCdXNVbmljb2RlQmxvY2sgKmJsb2NrID0KLSsgICAgICAgICAgICBpYnVzX3VuaWNv ZGVfYmxvY2tfbmV3ICgic3RhcnQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGEtPnN0YXJ0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJl bmQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmVuZCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bmFtZSA/IGdfc3RyZHVwIChkYXRhLT5uYW1l KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdfc3RyZHVw ICgiIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsgICAg ZGF0YS0+bGlzdCA9IGdfc2xpc3RfYXBwZW5kIChkYXRhLT5saXN0LCBibG9jayk7Ci0rfQotKwot K3N0YXRpYyB2b2lkCi0rdW5pY29kZV9kYXRhX3Jlc2V0IChVbmljb2RlRGF0YSAqZGF0YSkKLSt7 Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGRhdGEgIT0gTlVMTCk7Ci0rICAgIGRhdGEtPmNvZGUg PSAwOwotKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZkYXRhLT5uYW1lLCBnX2ZyZWUpOwotKyAgICBn X2NsZWFyX3BvaW50ZXIgKCZkYXRhLT5hbGlhcywgZ19mcmVlKTsKLSsgICAgZGF0YS0+c3RhcnQg PSAwOwotKyAgICBkYXRhLT5lbmQgPSAwOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLSt1Y2Rf bmFtZXNfbGlzdF9wYXJzZV9jb21tZW50IChjb25zdCBnY2hhciAqbGluZSkKLSt7Ci0rICAgIHN0 YXRpYyBnYm9vbGVhbiBoYXNfdmVyc2lvbiA9IEZBTFNFOwotKwotKyAgICBpZiAoaGFzX3ZlcnNp b24pCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgaWYgKHN0cmxlbiAobGluZSkgPiA0ICYm IHN0cm5jbXAgKGxpbmUsICJAQEAiLCAzKSA9PSAwKSB7Ci0rICAgICAgICBnY2hhciAqKmVsZW1l bnRzID0gZ19zdHJzcGxpdCAobGluZSwgIlx0IiwgLTEpOwotKyAgICAgICAgaWYgKHN0cm5jbXAg KGVsZW1lbnRzWzFdLCBOQU1FU19MSVNUX1NVQkpFQ1QsCi0rICAgICAgICAgICAgc3RybGVuIChO QU1FU19MSVNUX1NVQkpFQ1QpKSA9PSAwKSB7Ci0rICAgICAgICAgICAgdW5pY29kZV92ZXJzaW9u ID0KLSsgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChlbGVtZW50c1sxXSArIHN0cmxlbiAo TkFNRVNfTElTVF9TVUJKRUNUKSArIDEpOwotKyAgICAgICAgICAgIGhhc192ZXJzaW9uID0gVFJV RTsKLSsgICAgICAgIH0KLSsgICAgICAgIGdfc3RyZnJlZXYgKGVsZW1lbnRzKTsKLSsgICAgfQot KyAgICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rdWNkX25hbWVzX2xp c3RfcGFyc2VfYWxpYXMgKGNvbnN0IGdjaGFyICpsaW5lLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVbmljb2RlRGF0YSAqZGF0YSkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChsaW5lICE9IE5VTEwsIEZBTFNFKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRhdGEg IT0gTlVMTCwgRkFMU0UpOwotKwotKyAgICBpZiAoKmxpbmUgPT0gJ1wwJykKLSsgICAgICAgIHJl dHVybiBGQUxTRTsKLSsgICAgZGF0YS0+YWxpYXMgPSBnX3N0cmR1cCAobGluZSk7Ci0rICAgIHJl dHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLSt1Y2RfbmFtZXNfbGlzdF9wYXJz ZV9pbmRlbnRfbGluZSAoY29uc3QgZ2NoYXIgKmxpbmUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFVuaWNvZGVEYXRhICpkYXRhKQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lm X2ZhaWwgKGxpbmUgIT0gTlVMTCwgRkFMU0UpOwotKwotKyAgICBzd2l0Y2ggKCpsaW5lKSB7Ci0r ICAgIGNhc2UgJ1wwJzoKLSsgICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgY2FzZSAnPSc6Ci0r ICAgICAgICBsaW5lKys7Ci0rICAgICAgICB3aGlsZSAoKmxpbmUgPT0gJyAnKSBsaW5lKys7Ci0r ICAgICAgICByZXR1cm4gdWNkX25hbWVzX2xpc3RfcGFyc2VfYWxpYXMgKGxpbmUsIGRhdGEpOwot KyAgICBkZWZhdWx0OjsKLSsgICAgfQotKyAgICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGlj IGdib29sZWFuCi0rdWNkX25hbWVzX2xpc3RfcGFyc2VfbGluZSAoY29uc3QgZ2NoYXIgKmxpbmUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURhdGEgKmRhdGEpCi0rewotKyAg ICBnX3JldHVybl92YWxfaWZfZmFpbCAobGluZSAhPSBOVUxMLCBGQUxTRSk7Ci0rCi0rICAgIHN3 aXRjaCAoKmxpbmUpIHsKLSsgICAgY2FzZSAnXDAnOgotKyAgICAgICAgcmV0dXJuIFRSVUU7Ci0r ICAgIGNhc2UgJzsnOgotKyAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgIGNhc2UgJ0AnOgotKyAg ICAgICAgcmV0dXJuIHVjZF9uYW1lc19saXN0X3BhcnNlX2NvbW1lbnQgKGxpbmUpOwotKyAgICBj YXNlICdcdCc6Ci0rICAgICAgICByZXR1cm4gdWNkX25hbWVzX2xpc3RfcGFyc2VfaW5kZW50X2xp bmUgKGxpbmUgKyAxLCBkYXRhKTsKLSsgICAgZGVmYXVsdDo7Ci0rICAgIH0KLSsgICAgaWYgKGdf YXNjaWlfaXN4ZGlnaXQgKCpsaW5lKSkgewotKyAgICAgICAgZ2NoYXIgKiplbGVtZW50cyA9IGdf c3Ryc3BsaXQgKGxpbmUsICJcdCIsIC0xKTsKLSsgICAgICAgIGd1bmljaGFyIGNvZGU7Ci0rICAg ICAgICBnY2hhciAqbmFtZTsKLSsKLSsgICAgICAgIGlmIChnX3N0cnZfbGVuZ3RoIChlbGVtZW50 cykgPCAyKSB7Ci0rICAgICAgICAgICAgZ19zdHJmcmVldiAoZWxlbWVudHMpOwotKyAgICAgICAg ICAgIHJldHVybiBGQUxTRTsKLSsgICAgICAgIH0KLSsgICAgICAgIGNvZGUgPSBnX2FzY2lpX3N0 cnRvdWxsIChlbGVtZW50c1swXSwgTlVMTCwgMTYpOwotKyAgICAgICAgbmFtZSA9IGdfc3RyZHVw IChlbGVtZW50c1sxXSk7Ci0rICAgICAgICBpZiAoZGF0YS0+bmFtZSkgewotKyAgICAgICAgICAg IHVuaWNvZGVfZGF0YV9uZXdfb2JqZWN0IChkYXRhKTsKLSsgICAgICAgICAgICB1bmljb2RlX2Rh dGFfcmVzZXQgKGRhdGEpOwotKyAgICAgICAgfQotKyAgICAgICAgZGF0YS0+Y29kZSA9IGNvZGU7 Ci0rICAgICAgICBkYXRhLT5uYW1lID0gbmFtZTsKLSsgICAgfQotKyAgICByZXR1cm4gVFJVRTsK LSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rdWNkX2Jsb2Nrc19wYXJzZV9jb21tZW50IChjb25z dCBnY2hhciAqbGluZSkKLSt7Ci0rICAgIHN0YXRpYyBnYm9vbGVhbiBoYXNfdmVyc2lvbiA9IEZB TFNFOwotKwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAobGluZSAhPSBOVUxMLCBGQUxTRSk7 Ci0rCi0rICAgIGlmIChoYXNfdmVyc2lvbikKLSsgICAgICAgIHJldHVybiBUUlVFOwotKyAgICB3 aGlsZSAoKmxpbmUgPT0gJyAnKSBsaW5lKys7Ci0rICAgIGlmIChzdHJsZW4gKGxpbmUpID4gc3Ry bGVuIChCTE9DS1NfU1VCSkVDVCkgJiYKLSsgICAgICAgIHN0cm5jbXAgKGxpbmUsIEJMT0NLU19T VUJKRUNULCBzdHJsZW4gKEJMT0NLU19TVUJKRUNUKSkgPT0gMCkgewotKyAgICAgICAgICAgIHVu aWNvZGVfdmVyc2lvbiA9IGdfc3RyZHVwIChsaW5lICsgc3RybGVuIChCTE9DS1NfU1VCSkVDVCkg KyAxKTsKLSsgICAgICAgICAgICBoYXNfdmVyc2lvbiA9IFRSVUU7Ci0rICAgIH0KLSsgICAgcmV0 dXJuIFRSVUU7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK3VjZF9ibG9ja3NfcGFyc2VfbGlu ZSAoY29uc3QgZ2NoYXIgKmxpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRGF0 YSAqZGF0YSkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChsaW5lICE9IE5VTEwsIEZB TFNFKTsKLSsKLSsgICAgc3dpdGNoICgqbGluZSkgewotKyAgICBjYXNlICdcMCc6Ci0rICAgICAg ICByZXR1cm4gVFJVRTsKLSsgICAgY2FzZSAnIyc6Ci0rICAgICAgICByZXR1cm4gdWNkX2Jsb2Nr c19wYXJzZV9jb21tZW50IChsaW5lICsgMSk7Ci0rICAgIGRlZmF1bHQ6OwotKyAgICB9Ci0rICAg IGlmIChnX2FzY2lpX2lzeGRpZ2l0ICgqbGluZSkpIHsKLSsgICAgICAgIGdjaGFyICplbmRwdHIg PSBOVUxMOwotKyAgICAgICAgZ3VuaWNoYXIgc3RhcnQgPSBnX2FzY2lpX3N0cnRvdWxsIChsaW5l LCAmZW5kcHRyLCAxNik7Ci0rICAgICAgICBndW5pY2hhciBlbmQ7Ci0rICAgICAgICBnY2hhciAq bmFtZSA9IE5VTEw7Ci0rCi0rICAgICAgICBpZiAoZW5kcHRyID09IE5VTEwgfHwgKmVuZHB0ciA9 PSAnXDAnKQotKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgICAgIHdoaWxlICgqZW5k cHRyID09ICcuJykgZW5kcHRyKys7Ci0rICAgICAgICBsaW5lID0gZW5kcHRyOwotKyAgICAgICAg ZW5kcHRyID0gTlVMTDsKLSsgICAgICAgIGVuZCA9IGdfYXNjaWlfc3RydG91bGwgKGxpbmUsICZl bmRwdHIsIDE2KTsKLSsgICAgICAgIGlmIChlbmRwdHIgPT0gTlVMTCB8fCAqZW5kcHRyID09ICdc MCcpCi0rICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICAgICAgd2hpbGUgKCplbmRwdHIg PT0gJzsnKSBlbmRwdHIrKzsKLSsgICAgICAgIHdoaWxlICgqZW5kcHRyID09ICcgJykgZW5kcHRy Kys7Ci0rICAgICAgICBpZiAoKmVuZHB0ciA9PSAnXDAnKQotKyAgICAgICAgICAgIHJldHVybiBG QUxTRTsKLSsgICAgICAgIG5hbWUgPSBnX3N0cmR1cCAoZW5kcHRyKTsKLSsgICAgICAgIGlmIChk YXRhLT5uYW1lKSB7Ci0rICAgICAgICAgICAgdW5pY29kZV9ibG9ja19uZXdfb2JqZWN0IChkYXRh KTsKLSsgICAgICAgICAgICB1bmljb2RlX2RhdGFfcmVzZXQgKGRhdGEpOwotKyAgICAgICAgfQot KyAgICAgICAgZGF0YS0+c3RhcnQgPSBzdGFydDsKLSsgICAgICAgIGRhdGEtPmVuZCA9IGVuZDsK LSsgICAgICAgIGRhdGEtPm5hbWUgPSBuYW1lOwotKyAgICB9Ci0rICAgIHJldHVybiBUUlVFOwot K30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLSt1Y2RfcGFyc2VfZmlsZSAoY29uc3QgZ2NoYXIgKmZp bGVuYW1lLAotKyAgICAgICAgICAgICAgICBHU0xpc3QgICAgICoqbGlzdCwKLSsgICAgICAgICAg ICAgICAgVUNEVHlwZSAgICAgIHR5cGUpCi0rewotKyAgICBVbmljb2RlRGF0YSBkYXRhID0geyAw LCB9OwotKyAgICBnY2hhciAqY29udGVudCA9IE5VTEw7Ci0rICAgIGdzaXplIGxlbmd0aCA9IDA7 Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAgICBnY2hhciAqaGVhZCwgKmVuZCwgKmxp bmU7Ci0rICAgIGludCBuID0gMTsKLSsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZpbGVu YW1lICE9IE5VTEwsIEZBTFNFKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGxpc3QgIT0g TlVMTCwgRkFMU0UpOwotKwotKyAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMgKGZpbGVuYW1l LCAmY29udGVudCwgJmxlbmd0aCwgJmVycm9yKSkgewotKyAgICAgICAgZ193YXJuaW5nICgiRmFp bGVkIHRvIGxvYWQgJXM6ICVzIiwgZmlsZW5hbWUsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAg IGdvdG8gZmFpbGVkX3RvX3BhcnNlX3VjZF9uYW1lc19saXN0OwotKyAgICB9Ci0rICAgIGhlYWQg PSBlbmQgPSBjb250ZW50OwotKyAgICB3aGlsZSAoKmVuZCA9PSAnXG4nICYmIGVuZCAtIGNvbnRl bnQgPCBsZW5ndGgpIHsKLSsgICAgICAgIGVuZCsrOwotKyAgICAgICAgbisrOwotKyAgICB9Ci0r ICAgIGhlYWQgPSBlbmQ7Ci0rICAgIHdoaWxlIChlbmQgLSBjb250ZW50IDwgbGVuZ3RoKSB7Ci0r ICAgICAgICB3aGlsZSAoKmVuZCAhPSAnXG4nICYmIGVuZCAtIGNvbnRlbnQgPCBsZW5ndGgpCi0r ICAgICAgICAgICAgZW5kKys7Ci0rICAgICAgICBpZiAoZW5kIC0gY29udGVudCA+PSBsZW5ndGgp Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBsaW5lID0gZ19zdHJuZHVwIChoZWFkLCBl bmQgLSBoZWFkKTsKLSsgICAgICAgIHN3aXRjaCAodHlwZSkgewotKyAgICAgICAgY2FzZSBVQ0Rf TkFNRVNfTElTVDoKLSsgICAgICAgICAgICBpZiAoIXVjZF9uYW1lc19saXN0X3BhcnNlX2xpbmUg KGxpbmUsICZkYXRhKSkgewotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJwYXJzZSBlcnJv ciAjJWQgaW4gJXMgdmVyc2lvbiAlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IG4sIGZpbGVuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfdmVyc2lv biA/IHVuaWNvZGVfdmVyc2lvbiA6ICIobnVsbCkiLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpbmUpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAg IGNhc2UgVUNEX0JMT0NLUzoKLSsgICAgICAgICAgICBpZiAoIXVjZF9ibG9ja3NfcGFyc2VfbGlu ZSAobGluZSwgJmRhdGEpKSB7Ci0rICAgICAgICAgICAgICAgIGdfd2FybmluZyAoInBhcnNlIGVy cm9yICMlZCBpbiAlcyB2ZXJzaW9uICVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgbiwgZmlsZW5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV92ZXJz aW9uID8gdW5pY29kZV92ZXJzaW9uIDogIihudWxsKSIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGluZSk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAg ICAgZGVmYXVsdDoKLSsgICAgICAgICAgICBnX2Fib3J0ICgpOwotKyAgICAgICAgfQotKyAgICAg ICAgd2hpbGUgKCplbmQgPT0gJ1xuJyAmJiBlbmQgLSBjb250ZW50IDwgbGVuZ3RoKSB7Ci0rICAg ICAgICAgICAgZW5kKys7Ci0rICAgICAgICAgICAgbisrOwotKyAgICAgICAgfQotKyAgICAgICAg Z19mcmVlIChsaW5lKTsKLSsgICAgICAgIGhlYWQgPSBlbmQ7Ci0rICAgIH0KLSsgICAgaWYgKGRh dGEubmFtZSAhPSBOVUxMKSB7Ci0rICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSsgICAgICAgIGNh c2UgVUNEX05BTUVTX0xJU1Q6Ci0rICAgICAgICAgICAgdW5pY29kZV9kYXRhX25ld19vYmplY3Qg KCZkYXRhKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVUNEX0JMT0NLUzoK LSsgICAgICAgICAgICB1bmljb2RlX2Jsb2NrX25ld19vYmplY3QgKCZkYXRhKTsKLSsgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6OwotKyAgICAgICAgfQotKyAgICAgICAgdW5p Y29kZV9kYXRhX3Jlc2V0ICgmZGF0YSk7Ci0rICAgIH0KLSsgICAgZ19mcmVlIChjb250ZW50KTsK LSsgICAgKmxpc3QgPSBkYXRhLmxpc3Q7Ci0rICAgIHJldHVybiBUUlVFOwotKwotK2ZhaWxlZF90 b19wYXJzZV91Y2RfbmFtZXNfbGlzdDoKLSsgICAgaWYgKGVycm9yKQotKyAgICAgICAgZ19lcnJv cl9mcmVlIChlcnJvcik7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJmNvbnRlbnQsIGdfZnJlZSk7 Ci0rICAgICpsaXN0ID0gZGF0YS5saXN0OwotKyAgICByZXR1cm4gRkFMU0U7Ci0rfQotKwotK3N0 YXRpYyB2b2lkCi0rYmxvY2tfbGlzdF9kdW1wIChJQnVzVW5pY29kZUJsb2NrICpibG9jaywKLSsg ICAgICAgICAgICAgICAgIEdTdHJpbmcgICAgICAgICAgKmJ1ZmYpCi0rewotKyAgICBnX3JldHVy bl9pZl9mYWlsIChidWZmICE9IE5VTEwpOwotKwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYs ICIgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBtaWdodCByZWZlciB0aGUgIiAgICAgICAgIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNsYXRpb25zIGZyb20gZ3VjaGFybWFwIHdp dGhcbiIgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAg ICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuIiAgICAgXAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFybWFwLnBvIGlidXMu cG8gIiAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWJ1cy5wb3QgKi9c biIpOwotKyAgICBnY2hhciAqbGluZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiAgICBOXyhcIiVzXCIp LFxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfdW5pY29kZV9i bG9ja19nZXRfbmFtZSAoYmxvY2spKTsKLSsgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBsaW5l KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt1Y2RfYmxvY2tfdHJhbnNsYXRhYmxlX3NhdmUgKGNv bnN0IGdjaGFyICpmaWxlbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTTGlz dCAgICAgICpibG9ja3NfbGlzdCkKLSt7Ci0rICAgIGdjaGFyICpjb250ZW50ID0gTlVMTDsKLSsg ICAgZ3NpemUgbGVuZ3RoID0gMDsKLSsgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rICAgIGdj aGFyICpwOwotKyAgICBHU3RyaW5nICpidWZmID0gTlVMTDsKLSsgICAgaW50IGk7Ci0rICAgIEdT TGlzdCAqbGlzdCA9IGJsb2Nrc19saXN0OwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChmaWxl bmFtZSAhPSBOVUxMKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAobGlzdCAhPSBOVUxMKTsKLSsK LSsgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzIChfX0ZJTEVfXywgJmNvbnRlbnQsICZsZW5n dGgsICZlcnJvcikpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBsb2FkICVzOiAl cyIsIF9fRklMRV9fLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX2NsZWFyX3BvaW50ZXIg KCZlcnJvciwgZ19lcnJvcl9mcmVlKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAg ICBidWZmID0gZ19zdHJpbmdfbmV3IChOVUxMKTsKLSsgICAgcCA9IGNvbnRlbnQ7Ci0rICAgIGZv ciAoaSA9IDA7IGkgPCBMSUNFTlNFX0xJTkVTOyBpKyssIHArKykgewotKyAgICAgICAgaWYgKChw ID0gc3RyY2hyIChwLCAnXG4nKSkgPT0gTlVMTCkKLSsgICAgICAgICAgICBicmVhazsKLSsgICAg fQotKyAgICBpZiAocCAhPSBOVUxMKSB7Ci0rICAgICAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYs IGdfc3RybmR1cCAoY29udGVudCwgcCAtIGNvbnRlbnQpKTsKLSsgICAgICAgIGdfc3RyaW5nX2Fw cGVuZF9jIChidWZmLCAnXG4nKTsKLSsgICAgfQotKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZjb250 ZW50LCBnX2ZyZWUpOwotKwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgi XG4iKSk7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXBfcHJpbnRmICgiLyog VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSAlcy4gKi8iLCBfX0ZJTEVfXykpOwotKyAgICBnX3N0 cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgiXG4iKSk7Ci0rICAgIGdfc3RyaW5nX2FwcGVu ZCAoYnVmZiwgZ19zdHJkdXAgKCJpbmNsdWRlIDxnbGliL2dpMThuLmg+XG4iKSk7Ci0rICAgIGdf c3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXAgKCJcbiIpKTsKLSsgICAgZ19zdHJpbmdfYXBw ZW5kIChidWZmLCBnX3N0cmR1cCAoIiNpZm5kZWYgX19JQlVTX1VOSUNPREVfR0VOX0hfXG4iKSk7 Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXAgKCIjZGVmaW5lIF9fSUJVU19V TklDT0RFX0dFTl9IX1xuIikpOwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVw ICgiY29uc3Qgc3RhdGljIGNoYXIgKnVuaWNvZGVfYmxvY2tzW10gPSB7XG4iKSk7Ci0rICAgIGdf c2xpc3RfZm9yZWFjaCAobGlzdCwgKEdGdW5jKWJsb2NrX2xpc3RfZHVtcCwgYnVmZik7Ci0rICAg IGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXAgKCJ9O1xuIikpOwotKyAgICBnX3N0cmlu Z19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgiI2VuZGlmXG4iKSk7Ci0rCi0rICAgIGlmICghZ19m aWxlX3NldF9jb250ZW50cyAoZmlsZW5hbWUsIGJ1ZmYtPnN0ciwgLTEsICZlcnJvcikpIHsKLSsg ICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBzYXZlIGVtb2ppIGNhdGVnb3J5IGZpbGUgJXM6 ICVzIiwgZmlsZW5hbWUsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAo ZXJyb3IpOwotKyAgICB9Ci0rCi0rICAgIGdfc3RyaW5nX2ZyZWUgKGJ1ZmYsIFRSVUUpOwotK30K LSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsgICAgZ2NoYXIg KnByZ25hbWU7Ci0rICAgIGdjaGFyICppbnB1dF9uYW1lc19saXN0ID0gTlVMTDsKLSsgICAgZ2No YXIgKmlucHV0X2Jsb2NrcyA9IE5VTEw7Ci0rICAgIGdjaGFyICpvdXRwdXRfbmFtZXNfbGlzdCA9 IE5VTEw7Ci0rICAgIGdjaGFyICpvdXRwdXRfYmxvY2tzID0gTlVMTDsKLSsgICAgZ2NoYXIgKm91 dHB1dF9ibG9ja3NfdHJhbnMgPSBOVUxMOwotKyAgICBHT3B0aW9uRW50cnkgICAgIGVudHJpZXNb XSA9IHsKLSsgICAgICAgIHsgImlucHV0LW5hbWVzLWxpc3QiLCAnbicsIDAsIEdfT1BUSU9OX0FS R19TVFJJTkcsICZpbnB1dF9uYW1lc19saXN0LAotKyAgICAgICAgICAiUGFyc2UgTmFtZXNMaXN0 LnR4dCBGSUxFIGluIHVuaWNvZGUub3JnICIsCi0rICAgICAgICAgICJGSUxFIgotKyAgICAgICAg fSwKLSsgICAgICAgIHsgImlucHV0LWJsb2NrcyIsICdiJywgMCwgR19PUFRJT05fQVJHX1NUUklO RywgJmlucHV0X2Jsb2NrcywKLSsgICAgICAgICAgIlBhcnNlIEJsb2Nrcy50eHQgRklMRSBpbiB1 bmljb2RlLm9yZyAiLAotKyAgICAgICAgICAiRklMRSIKLSsgICAgICAgIH0sCi0rICAgICAgICB7 ICJvdXRwdXQtbmFtZXMtbGlzdCIsICdvJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJm91dHB1 dF9uYW1lc19saXN0LAotKyAgICAgICAgICAiU2F2ZSB0aGUgVW5pY29kZSBkYXRhIGFzIEZJTEUi LAotKyAgICAgICAgICAiRklMRSIKLSsgICAgICAgIH0sCi0rICAgICAgICB7ICJvdXRwdXQtYmxv Y2tzIiwgJ0InLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmb3V0cHV0X2Jsb2NrcywKLSsgICAg ICAgICAgIlNhdmUgdGhlIFVuaWNvZGUgYmxvY2sgbGlzdCBhcyBGSUxFIiwKLSsgICAgICAgICAg IkZJTEUiCi0rICAgICAgICB9LAotKyAgICAgICAgeyAib3V0cHV0LWJsb2Nrcy10cmFucyIsICdD JywgMCwgR19PUFRJT05fQVJHX1NUUklORywKLSsgICAgICAgICAgJm91dHB1dF9ibG9ja3NfdHJh bnMsCi0rICAgICAgICAgICJTYXZlIHRoZSB0cmFuc2xhdGFibGUgVW5pY29kZSBibG9ja3MgYXMg RklMRSIsCi0rICAgICAgICAgICJGSUxFIgotKyAgICAgICAgfSwKLSsgICAgICAgIHsgTlVMTCB9 Ci0rICAgIH07Ci0rICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0OwotKyAgICBHRXJyb3IgKmVy cm9yID0gTlVMTDsKLSsgICAgR1NMaXN0ICpuYW1lc19saXN0ID0gTlVMTDsKLSsgICAgR1NMaXN0 ICpibG9ja3NfbGlzdCA9IE5VTEw7Ci0rCi0rI2lmZGVmIEhBVkVfTE9DQUxFX0gKLSsgICAgLyog VG8gb3V0cHV0IGVtb2ppIHdhcm5pbmdzLiAqLwotKyAgICBzZXRsb2NhbGUgKExDX0FMTCwgIiIp OwotKyNlbmRpZgotKwotKyAgICBwcmduYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAoYXJndlsw XSk7Ci0rICAgIGdfc2V0X3ByZ25hbWUgKHByZ25hbWUpOwotKyAgICBnX2ZyZWUgKHByZ25hbWUp OwotKwotKyAgICBjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKE5VTEwpOwotKyAgICBn X29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMgKGNvbnRleHQsIGVudHJpZXMsIE5VTEwp OwotKwotKyAgICBpZiAoYXJnYyA8IDMpIHsKLSsgICAgICAgIGdfcHJpbnQgKCIlcyIsIGdfb3B0 aW9uX2NvbnRleHRfZ2V0X2hlbHAgKGNvbnRleHQsIFRSVUUsIE5VTEwpKTsKLSsgICAgICAgIGdf b3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7Ci0rICAgICAgICByZXR1cm4gLTE7Ci0rICAg IH0KLSsKLSsgICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjb250ZXh0LCAmYXJnYywg JmFyZ3YsICZlcnJvcikpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCBvcHRpb25zOiAl cyIsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAg ICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29u dGV4dCk7Ci0rCi0rICAgIGlmIChpbnB1dF9uYW1lc19saXN0KSB7Ci0rICAgICAgICB1Y2RfcGFy c2VfZmlsZSAoaW5wdXRfbmFtZXNfbGlzdCwgJm5hbWVzX2xpc3QsIFVDRF9OQU1FU19MSVNUKTsK LSsgICAgICAgIGdfZnJlZSAoaW5wdXRfbmFtZXNfbGlzdCk7Ci0rICAgIH0KLSsgICAgaWYgKG91 dHB1dF9uYW1lc19saXN0ICYmIG5hbWVzX2xpc3QpCi0rICAgICAgICBpYnVzX3VuaWNvZGVfZGF0 YV9zYXZlIChvdXRwdXRfbmFtZXNfbGlzdCwgbmFtZXNfbGlzdCk7Ci0rICAgIGdfZnJlZSAob3V0 cHV0X25hbWVzX2xpc3QpOwotKwotKyAgICBpZiAoaW5wdXRfYmxvY2tzKSB7Ci0rICAgICAgICB1 Y2RfcGFyc2VfZmlsZSAoaW5wdXRfYmxvY2tzLCAmYmxvY2tzX2xpc3QsIFVDRF9CTE9DS1MpOwot KyAgICAgICAgZ19mcmVlIChpbnB1dF9ibG9ja3MpOwotKyAgICB9Ci0rICAgIGlmIChvdXRwdXRf YmxvY2tzICYmIGJsb2Nrc19saXN0KQotKyAgICAgICAgaWJ1c191bmljb2RlX2Jsb2NrX3NhdmUg KG91dHB1dF9ibG9ja3MsIGJsb2Nrc19saXN0KTsKLSsgICAgaWYgKG91dHB1dF9ibG9ja3NfdHJh bnMgJiYgYmxvY2tzX2xpc3QpCi0rICAgICAgICB1Y2RfYmxvY2tfdHJhbnNsYXRhYmxlX3NhdmUg KG91dHB1dF9ibG9ja3NfdHJhbnMsIGJsb2Nrc19saXN0KTsKLSsgICAgZ19mcmVlIChvdXRwdXRf YmxvY2tzKTsKLSsKLSsgICAgZ19mcmVlICh1bmljb2RlX3ZlcnNpb24pOwotKyAgICByZXR1cm4g MDsKLSt9Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2pp ZXIudmFsYQotaW5kZXggZjNlOWYxNWMuLjU1NWVhNjhmIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9l bW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1vamllci52YWxhCi1AQCAtMiw3ICsyLDcgQEAK LSAgKgotICAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICoKLS0gKiBDb3B5cmlnaHQgKGMpIDIw MTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJp Z2h0IChjKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAgKiBVU0EKLSAg Ki8KLSAKLS1jbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0rcHVi bGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgcHJp dmF0ZSBjbGFzcyBFRW50cnkgOiBHdGsuU2VhcmNoRW50cnkgewotICAgICAgICAgcHVibGljIEVF bnRyeSgpIHsKLSAgICAgICAgICAgICBHTGliLk9iamVjdCgKLUBAIC05OSwxNSArOTksNzAgQEAg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgfQot ICAgICB9Ci0gICAgIHByaXZhdGUgY2xhc3MgRVdoaXRlTGFiZWwgOiBHdGsuTGFiZWwgewotKyAg ICAgICAgcHJpdmF0ZSBpbnQgbV9taW5pbXVtX3dpZHRoID0gMDsKLSsgICAgICAgIHByaXZhdGUg aW50IG1fbmF0dXJhbF93aWR0aCA9IDA7Ci0rICAgICAgICBwcml2YXRlIGludCBtX21pbmltdW1f aGVpZ2h0ID0gMDsKLSsgICAgICAgIHByaXZhdGUgaW50IG1fbmF0dXJhbF9oZWlnaHQgPSAwOwot ICAgICAgICAgcHVibGljIEVXaGl0ZUxhYmVsKHN0cmluZyB0ZXh0KSB7Ci0gICAgICAgICAgICAg R0xpYi5PYmplY3QoCi0gICAgICAgICAgICAgICAgIG5hbWUgOiAiSUJ1c0Vtb2ppZXJXaGl0ZUxh YmVsIgotICAgICAgICAgICAgICk7Ci0tICAgICAgICAgICAgaWYgKHRleHQgIT0gIiIpCi0tICAg ICAgICAgICAgICAgIHNldF9sYWJlbCh0ZXh0KTsKLSsgICAgICAgICAgICBzZXRfbGFiZWwodGV4 dCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBnZXRfcHJlZmVy cmVkX3dpZHRoKG91dCBpbnQgbWluaW11bV93aWR0aCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBuYXR1cmFsX3dpZHRoKSB7Ci0rICAg ICAgICAgICAgaWYgKG1fbWluaW11bV9oZWlnaHQgPT0gMCAmJiBtX25hdHVyYWxfaGVpZ2h0ID09 IDApIHsKLSsgICAgICAgICAgICAgICAgYmFzZS5nZXRfcHJlZmVycmVkX2hlaWdodChvdXQgbV9t aW5pbXVtX2hlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvdXQgbV9uYXR1cmFsX2hlaWdodCk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIHZh ciB0ZXh0ID0gZ2V0X2xhYmVsKCk7Ci0rICAgICAgICAgICAgdmFyIGNoID0gdGV4dC5nZXRfY2hh cigpOwotKyAgICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PSAxICYmIGNoID09ICdcdCcpIHsK LSsgICAgICAgICAgICAgICAgbV9taW5pbXVtX3dpZHRoID0gbWluaW11bV93aWR0aCA9IG1fbWlu aW11bV9oZWlnaHQ7Ci0rICAgICAgICAgICAgICAgIG1fbmF0dXJhbF93aWR0aCA9IG5hdHVyYWxf d2lkdGggPSBtX25hdHVyYWxfaGVpZ2h0OwotKyAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgICAgIGJhc2UuZ2V0X3ByZWZlcnJlZF93aWR0aChvdXQgbWlu aW11bV93aWR0aCwgb3V0IG5hdHVyYWxfd2lkdGgpOwotKyAgICAgICAgICAgIGlmICh0ZXh0Lmxl bmd0aCA9PSAxICYmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicpKSB7Ci0rICAgICAgICAgICAg ICAgIG1pbmltdW1fd2lkdGggLz0gMjsKLSsgICAgICAgICAgICAgICAgbmF0dXJhbF93aWR0aCAv PSAyOwotKyAgICAgICAgICAgICAgICBtX21pbmltdW1fd2lkdGggPSBtaW5pbXVtX3dpZHRoOwot KyAgICAgICAgICAgICAgICBtX25hdHVyYWxfd2lkdGggPSBuYXR1cmFsX3dpZHRoOwotKyAgICAg ICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmIChtaW5p bXVtX3dpZHRoIDwgbV9taW5pbXVtX2hlaWdodCkKLSsgICAgICAgICAgICAgICAgbWluaW11bV93 aWR0aCA9IG1fbWluaW11bV9oZWlnaHQ7Ci0rICAgICAgICAgICAgaWYgKG5hdHVyYWxfd2lkdGgg PCBtX25hdHVyYWxfaGVpZ2h0KQotKyAgICAgICAgICAgICAgICBuYXR1cmFsX3dpZHRoID0gbV9u YXR1cmFsX2hlaWdodDsKLSsgICAgICAgICAgICBtX21pbmltdW1fd2lkdGggPSBtaW5pbXVtX3dp ZHRoOwotKyAgICAgICAgICAgIG1fbmF0dXJhbF93aWR0aCA9IG5hdHVyYWxfd2lkdGg7Ci0rICAg ICAgICB9Ci0rICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBnZXRfcHJlZmVycmVkX2hlaWdo dChvdXQgaW50IG1pbmltdW1faGVpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBuYXR1cmFsX2hlaWdodCkgewotKyAgICAgICAg ICAgIGlmIChtX21pbmltdW1fd2lkdGggPT0gMCAmJiBtX25hdHVyYWxfd2lkdGggPT0gMCkgewot KyAgICAgICAgICAgICAgICBiYXNlLmdldF9wcmVmZXJyZWRfd2lkdGgob3V0IG1fbWluaW11bV93 aWR0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBtX25h dHVyYWxfd2lkdGgpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB2YXIgdGV4dCA9IGdl dF9sYWJlbCgpOwotKyAgICAgICAgICAgIHZhciBjaCA9IHRleHQuZ2V0X2NoYXIoKTsKLSsgICAg ICAgICAgICBpZiAodGV4dC5sZW5ndGggPT0gMSAmJiBjaCA9PSAnXHYnKSB7Ci0rICAgICAgICAg ICAgICAgIG1fbWluaW11bV9oZWlnaHQgPSBtaW5pbXVtX2hlaWdodCA9IG1fbWluaW11bV93aWR0 aDsKLSsgICAgICAgICAgICAgICAgbV9uYXR1cmFsX2hlaWdodCA9IG5hdHVyYWxfaGVpZ2h0ID0g bV9uYXR1cmFsX3dpZHRoOwotKyAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgICAgIGJhc2UuZ2V0X3ByZWZlcnJlZF9oZWlnaHQob3V0IG1pbmltdW1faGVp Z2h0LCBvdXQgbmF0dXJhbF9oZWlnaHQpOwotKyAgICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9 PSAxICYmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicpKSB7Ci0rICAgICAgICAgICAgICAgIG1p bmltdW1faGVpZ2h0IC89IDI7Ci0rICAgICAgICAgICAgICAgIG5hdHVyYWxfaGVpZ2h0IC89IDI7 Ci0rICAgICAgICAgICAgICAgIG1fbWluaW11bV9oZWlnaHQgPSBtaW5pbXVtX2hlaWdodDsKLSsg ICAgICAgICAgICAgICAgbV9uYXR1cmFsX2hlaWdodCA9IG5hdHVyYWxfaGVpZ2h0OwotKyAgICAg ICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIG1fbWluaW11 bV9oZWlnaHQgPSBtaW5pbXVtX2hlaWdodDsKLSsgICAgICAgICAgICBtX25hdHVyYWxfaGVpZ2h0 ID0gbmF0dXJhbF9oZWlnaHQ7Ci0gICAgICAgICB9Ci0gICAgIH0KLS0gICAgcHJpdmF0ZSBjbGFz cyBFU2VsZWN0ZWRMYWJlbCA6IEd0ay5MYWJlbCB7Ci0rICAgIHByaXZhdGUgY2xhc3MgRVNlbGVj dGVkTGFiZWwgOiBFV2hpdGVMYWJlbCB7Ci0gICAgICAgICBwdWJsaWMgRVNlbGVjdGVkTGFiZWwo c3RyaW5nIHRleHQpIHsKLSAgICAgICAgICAgICBHTGliLk9iamVjdCgKLSAgICAgICAgICAgICAg ICAgbmFtZSA6ICJJQnVzRW1vamllclNlbGVjdGVkTGFiZWwiCi1AQCAtMTE2LDcgKzE3MSw3IEBA IGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAg ICAgICAgc2V0X2xhYmVsKHRleHQpOwotICAgICAgICAgfQotICAgICB9Ci0tICAgIHByaXZhdGUg Y2xhc3MgRUdvbGRMYWJlbCA6IEd0ay5MYWJlbCB7Ci0rICAgIHByaXZhdGUgY2xhc3MgRUdvbGRM YWJlbCA6IEVXaGl0ZUxhYmVsIHsKLSAgICAgICAgIHB1YmxpYyBFR29sZExhYmVsKHN0cmluZyB0 ZXh0KSB7Ci0gICAgICAgICAgICAgR0xpYi5PYmplY3QoCi0gICAgICAgICAgICAgICAgIG5hbWUg OiAiSUJ1c0Vtb2ppZXJHb2xkTGFiZWwiCi1AQCAtMTY3LDYgKzIyMiw3IEBAIGNsYXNzIElCdXNF bW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgfQotICAgICBwcml2YXRlIGNs YXNzIEVUaXRsZUxhYmVsQm94IDogR3RrLkhlYWRlckJhciB7Ci0gICAgICAgICBwcml2YXRlIEd0 ay5MYWJlbCBtX2xhbmdfbGFiZWw7Ci0rICAgICAgICBwcml2YXRlIEd0ay5MYWJlbCBtX3RpdGxl X2xhYmVsOwotIAotICAgICAgICAgcHVibGljIEVUaXRsZUxhYmVsQm94KHN0cmluZyB0aXRsZSkg ewotICAgICAgICAgICAgIEdMaWIuT2JqZWN0KAotQEAgLTE3Nyw5ICsyMzMsOSBAQCBjbGFzcyBJ QnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgKTsKLSAg ICAgICAgICAgICB2YXIgdmJveCA9IG5ldyBHdGsuQm94KEd0ay5PcmllbnRhdGlvbi5WRVJUSUNB TCwgMCk7Ci0gICAgICAgICAgICAgc2V0X2N1c3RvbV90aXRsZSh2Ym94KTsKLS0gICAgICAgICAg ICB2YXIgbGFiZWwgPSBuZXcgR3RrLkxhYmVsKHRpdGxlKTsKLS0gICAgICAgICAgICBsYWJlbC5n ZXRfc3R5bGVfY29udGV4dCgpLmFkZF9jbGFzcyhHdGsuU1RZTEVfQ0xBU1NfVElUTEUpOwotLSAg ICAgICAgICAgIHZib3gucGFja19zdGFydChsYWJlbCwgdHJ1ZSwgZmFsc2UsIDApOwotKyAgICAg ICAgICAgIG1fdGl0bGVfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKHRpdGxlKTsKLSsgICAgICAgICAg ICBtX3RpdGxlX2xhYmVsLmdldF9zdHlsZV9jb250ZXh0KCkuYWRkX2NsYXNzKEd0ay5TVFlMRV9D TEFTU19USVRMRSk7Ci0rICAgICAgICAgICAgdmJveC5wYWNrX3N0YXJ0KG1fdGl0bGVfbGFiZWws IHRydWUsIGZhbHNlLCAwKTsKLSAgICAgICAgICAgICBtX2xhbmdfbGFiZWwgPSBuZXcgR3RrLkxh YmVsKG51bGwpOwotICAgICAgICAgICAgIG1fbGFuZ19sYWJlbC5nZXRfc3R5bGVfY29udGV4dCgp LmFkZF9jbGFzcygKLSAgICAgICAgICAgICAgICAgICAgIEd0ay5TVFlMRV9DTEFTU19TVUJUSVRM RSk7Ci1AQCAtMTk0LDEwICsyNTAsMTkgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgewotICAgICAgICAgICAgIG1lbnVfYnV0dG9uLnNldF90b29sdGlwX3RleHQo XygiTWVudSIpKTsKLSAgICAgICAgICAgICBwYWNrX2VuZChtZW51X2J1dHRvbik7Ci0gICAgICAg ICB9Ci0rICAgICAgICBwdWJsaWMgbmV3IHZvaWQgc2V0X3RpdGxlKHN0cmluZyB0aXRsZSkgewot KyAgICAgICAgICAgIG1fdGl0bGVfbGFiZWwuc2V0X3RleHQodGl0bGUpOwotKyAgICAgICAgfQot ICAgICAgICAgcHVibGljIHZvaWQgc2V0X2xhbmdfbGFiZWwoc3RyaW5nIHN0cikgewotICAgICAg ICAgICAgIG1fbGFuZ19sYWJlbC5zZXRfdGV4dChzdHIpOwotICAgICAgICAgfQotICAgICB9Ci0r ICAgIHByaXZhdGUgY2xhc3MgTG9hZFByb2dyZXNzT2JqZWN0IDogR0xpYi5PYmplY3QgewotKyAg ICAgICAgcHVibGljIExvYWRQcm9ncmVzc09iamVjdCgpIHsKLSsgICAgICAgIH0KLSsgICAgICAg IHB1YmxpYyBzaWduYWwgdm9pZCBkZXNlcmlhbGl6ZV91bmljb2RlKHVpbnQgZG9uZSwgdWludCB0 b3RhbCk7Ci0rICAgIH0KLSsKLSAKLSAgICAgcHJpdmF0ZSBlbnVtIFRyYXZlbERpcmVjdGlvbiB7 Ci0gICAgICAgICBOT05FLAotQEAgLTIwNyw2ICsyNzIsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIHByaXZhdGUgY29uc3QgdWludCBFTU9KSV9H UklEX1BBR0UgPSAxMDsKLSAgICAgcHJpdmF0ZSBjb25zdCBzdHJpbmcgRU1PSklfQ0FURUdPUllf RkFWT1JJVEVTID0gTl8oIkZhdm9yaXRlcyIpOwotICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBF TU9KSV9DQVRFR09SWV9PVEhFUlMgPSBOXygiT3RoZXJzIik7Ci0rICAgIHByaXZhdGUgY29uc3Qg c3RyaW5nIEVNT0pJX0NBVEVHT1JZX1VOSUNPREUgPSBOXygiT3BlbiBVbmljb2RlIGNob2ljZSIp OwotICAgICBwcml2YXRlIGNvbnN0IHVuaWNoYXJbXSBFTU9KSV9WQVJJQU5UX0xJU1QgPSB7Ci0g ICAgICAgICAgICAgMHgxZjNmYiwgMHgxZjNmYywgMHgxZjNmZCwgMHgxZjNmZSwgMHgxZjNmZiwg MHgyMDBkIH07Ci0gCi1AQCAtMjIzLDYgKzI4OSw4IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgcHJpdmF0ZSBzdGF0aWMgdWludCBtX3BhcnRpYWxf bWF0Y2hfbGVuZ3RoOwotICAgICBwcml2YXRlIHN0YXRpYyB1aW50IG1fcGFydGlhbF9tYXRjaF9j b25kaXRpb247Ci0gICAgIHByaXZhdGUgc3RhdGljIGJvb2wgbV9zaG93X2Vtb2ppX3ZhcmlhbnQg PSBmYWxzZTsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1fZGVmYXVsdF93aW5kb3dfd2lkdGg7 Ci0rICAgIHByaXZhdGUgc3RhdGljIGludCBtX2RlZmF1bHRfd2luZG93X2hlaWdodDsKLSAgICAg cHJpdmF0ZSBzdGF0aWMgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBHTGliLlNMaXN0PHN0cmluZz4+ PwotICAgICAgICAgICAgIG1fYW5ub3RhdGlvbl90b19lbW9qaXNfZGljdDsKLSAgICAgcHJpdmF0 ZSBzdGF0aWMgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBJQnVzLkVtb2ppRGF0YT4/Ci1AQCAtMjMx LDYgKzI5OSwxNCBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7 Ci0gICAgICAgICAgICAgbV9jYXRlZ29yeV90b19lbW9qaXNfZGljdDsKLSAgICAgcHJpdmF0ZSBz dGF0aWMgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBHTGliLlNMaXN0PHN0cmluZz4+PwotICAgICAg ICAgICAgIG1fZW1vamlfdG9fZW1vamlfdmFyaWFudHNfZGljdDsKLSsgICAgcHJpdmF0ZSBzdGF0 aWMgR0xpYi5IYXNoVGFibGU8dW5pY2hhciwgSUJ1cy5Vbmljb2RlRGF0YT4/Ci0rICAgICAgICAg ICAgbV91bmljb2RlX3RvX2RhdGFfZGljdDsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgR0xpYi5IYXNo VGFibGU8c3RyaW5nLCBHTGliLlNMaXN0PHVuaWNoYXI+Pj8KLSsgICAgICAgICAgICBtX25hbWVf dG9fdW5pY29kZXNfZGljdDsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgR0xpYi5TTGlzdDxJQnVzLlVu aWNvZGVCbG9jaz4gbV91bmljb2RlX2Jsb2NrX2xpc3Q7Ci0rICAgIHByaXZhdGUgc3RhdGljIGJv b2wgbV9zaG93X3VuaWNvZGUgPSBmYWxzZTsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgTG9hZFByb2dy ZXNzT2JqZWN0IG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3Q7Ci0rICAgIHByaXZhdGUgc3RhdGlj IGJvb2wgbV9sb2FkZWRfdW5pY29kZSA9IGZhbHNlOwotIAotICAgICBwcml2YXRlIFRoZW1lZFJH QkEgbV9yZ2JhOwotICAgICBwcml2YXRlIEd0ay5Cb3ggbV92Ym94OwotQEAgLTI0Niw3ICszMjIs NyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIHBy aXZhdGUgc3RyaW5nPyBtX3Jlc3VsdDsKLSAgICAgcHJpdmF0ZSBzdHJpbmc/IG1fdW5pY29kZV9w b2ludCA9IG51bGw7Ci0gICAgIHByaXZhdGUgYm9vbCBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNp YmxlOwotLSAgICBwcml2YXRlIGludCBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleDsKLSsgICAgcHJp dmF0ZSBpbnQgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKLSAgICAgcHJpdmF0ZSBJQnVz Lkxvb2t1cFRhYmxlIG1fbG9va3VwX3RhYmxlOwotICAgICBwcml2YXRlIEd0ay5MYWJlbFtdIG1f Y2FuZGlkYXRlczsKLSAgICAgcHJpdmF0ZSBib29sIG1fZW50ZXJfbm90aWZ5X2VuYWJsZSA9IHRy dWU7Ci1AQCAtMjU0LDYgKzMzMCw5IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0 aW9uV2luZG93IHsKLSAgICAgcHJpdmF0ZSB1aW50IG1fZW50cnlfbm90aWZ5X2Rpc2FibGVfaWQ7 Ci0gICAgIHByb3RlY3RlZCBzdGF0aWMgZG91YmxlIG1fbW91c2VfeDsKLSAgICAgcHJvdGVjdGVk IHN0YXRpYyBkb3VibGUgbV9tb3VzZV95OwotKyAgICBwcml2YXRlIEd0ay5Qcm9ncmVzc0JhciBt X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyOwotKyAgICBwcml2YXRlIEd0ay5MYWJlbCBtX3VuaWNvZGVf cGVyY2VudF9sYWJlbDsKLSsgICAgcHJpdmF0ZSBkb3VibGUgbV91bmljb2RlX3BlcmNlbnQ7Ci0g Ci0gICAgIHB1YmxpYyBzaWduYWwgdm9pZCBjYW5kaWRhdGVfY2xpY2tlZCh1aW50IGluZGV4LCB1 aW50IGJ1dHRvbiwgdWludCBzdGF0ZSk7Ci0gCi1AQCAtNDAyLDYgKzQ4MSw4IEBAIGNsYXNzIElC dXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIGlmIChtX2Fubm90 YXRpb25fdG9fZW1vamlzX2RpY3QgPT0gbnVsbCkgewotICAgICAgICAgICAgIHJlbG9hZF9lbW9q aV9kaWN0KCk7Ci0gICAgICAgICB9Ci0rCi0rICAgICAgICBnZXRfbG9hZF9wcm9ncmVzc19vYmpl Y3QoKTsKLSAgICAgfQotIAotIAotQEAgLTQzMyw2ICs1MTQsMTMgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgbV9lbW9qaV90b19lbW9qaV92 YXJpYW50c19kaWN0ID0KLSAgICAgICAgICAgICAgICAgbmV3IEdMaWIuSGFzaFRhYmxlPHN0cmlu ZywgR0xpYi5TTGlzdDxzdHJpbmc+PihHTGliLnN0cl9oYXNoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuc3RyX2Vx dWFsKTsKLSsgICAgICAgIG1fdW5pY29kZV90b19kYXRhX2RpY3QgPQotKyAgICAgICAgICAgICAg ICBuZXcgR0xpYi5IYXNoVGFibGU8dW5pY2hhciwgSUJ1cy5Vbmljb2RlRGF0YT4oCi0rICAgICAg ICAgICAgICAgICAgICAgICAgR0xpYi5kaXJlY3RfaGFzaCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBHTGliLmRpcmVjdF9lcXVhbCk7Ci0rICAgICAgICBtX25hbWVfdG9fdW5pY29kZXNfZGlj dCA9Ci0rICAgICAgICAgICAgICAgIG5ldyBHTGliLkhhc2hUYWJsZTxzdHJpbmcsIEdMaWIuU0xp c3Q8dW5pY2hhcj4+KEdMaWIuc3RyX2hhc2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuc3RyX2VxdWFsKTsKLSAg ICAgfQotIAotIAotQEAgLTQ4Miw2ICs1NzAsMTAgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsu QXBwbGljYXRpb25XaW5kb3cgewotICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgdXRmOF9jb2Rl X3BvaW50KHN0cmluZyBzdHIpIHsKLSAgICAgICAgIHZhciBidWZmID0gbmV3IEdMaWIuU3RyaW5n QnVpbGRlcigpOwotICAgICAgICAgaW50IGxlbmd0aCA9IHN0ci5jaGFyX2NvdW50KCk7Ci0rICAg ICAgICBpZiAobGVuZ3RoID09IDApIHsKLSsgICAgICAgICAgICBidWZmLmFwcGVuZCgiVSslMDRY Ii5wcmludGYoMCkpOwotKyAgICAgICAgICAgIHJldHVybiBidWZmLnN0cjsKLSsgICAgICAgIH0K LSAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg ICB1bmljaGFyIGNoID0gc3RyLmdldF9jaGFyKDApOwotICAgICAgICAgICAgIGlmIChpID09IDAp Ci1AQCAtNjQ0LDYgKzczNiw3MiBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgIH0KLSAKLSAKLSsgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBtYWtlX3Vu aWNvZGVfYmxvY2tfZGljdCgpIHsKLSsgICAgICAgIG1fdW5pY29kZV9ibG9ja19saXN0ID0gSUJ1 cy5Vbmljb2RlQmxvY2subG9hZCgKLSsgICAgICAgICAgICAgICAgICAgIENvbmZpZy5QS0dEQVRB RElSICsgIi9kaWN0cy91bmljb2RlLWJsb2Nrcy5kaWN0Iik7Ci0rICAgICAgICBmb3JlYWNoICh1 bm93bmVkIElCdXMuVW5pY29kZUJsb2NrIGJsb2NrIGluIG1fdW5pY29kZV9ibG9ja19saXN0KSB7 Ci0rICAgICAgICAgICAgdW5vd25lZCBzdHJpbmcgbmFtZSA9IGJsb2NrLmdldF9uYW1lKCk7Ci0r ICAgICAgICAgICAgaWYgKG1fZW1vamlfbWF4X3NlcV9sZW4gPCBuYW1lLmxlbmd0aCkKLSsgICAg ICAgICAgICAgICAgbV9lbW9qaV9tYXhfc2VxX2xlbiA9IG5hbWUubGVuZ3RoOwotKyAgICAgICAg fQotKyAgICB9Ci0rCi0rCi0rICAgIHByaXZhdGUgc3RhdGljIHZvaWQgbWFrZV91bmljb2RlX25h bWVfZGljdChPYmplY3Qgc291cmNlX29iamVjdCkgewotKyAgICAgICAgSUJ1cy5Vbmljb2RlRGF0 YS5sb2FkX2FzeW5jKAotKyAgICAgICAgICAgICAgICAgICAgQ29uZmlnLlBLR0RBVEFESVIgKyAi L2RpY3RzL3VuaWNvZGUtbmFtZXMuZGljdCIsCi0rICAgICAgICAgICAgICAgICAgICBzb3VyY2Vf b2JqZWN0LAotKyAgICAgICAgICAgICAgICAgICAgbnVsbCwKLSsgICAgICAgIChJQnVzLlVuaWNv ZGVEYXRhTG9hZEFzeW5jRmluaXNoKW1ha2VfdW5pY29kZV9uYW1lX2RpY3RfZmluaXNoKTsKLSsg ICAgfQotKwotKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkCi0rICAgIG1ha2VfdW5pY29kZV9uYW1l X2RpY3RfZmluaXNoKEdMaWIuU0xpc3Q8SUJ1cy5Vbmljb2RlRGF0YT4gdW5pY29kZV9saXN0KSB7 Ci0rICAgICAgICBpZiAodW5pY29kZV9saXN0ID09IG51bGwpCi0rICAgICAgICAgICAgcmV0dXJu OwotKyAgICAgICAgZm9yZWFjaCAoSUJ1cy5Vbmljb2RlRGF0YSBkYXRhIGluIHVuaWNvZGVfbGlz dCkgewotKyAgICAgICAgICAgIHVwZGF0ZV91bmljb2RlX3RvX2RhdGFfZGljdChkYXRhKTsKLSsg ICAgICAgICAgICB1cGRhdGVfbmFtZV90b191bmljb2Rlc19kaWN0KGRhdGEpOwotKyAgICAgICAg fQotKyAgICAgICAgR0xpYi5MaXN0PHVub3duZWQgc3RyaW5nPiBuYW1lcyA9Ci0rICAgICAgICAg ICAgICAgIG1fbmFtZV90b191bmljb2Rlc19kaWN0LmdldF9rZXlzKCk7Ci0rICAgICAgICBmb3Jl YWNoICh1bm93bmVkIHN0cmluZyBuYW1lIGluIG5hbWVzKSB7Ci0rICAgICAgICAgICAgaWYgKG1f ZW1vamlfbWF4X3NlcV9sZW4gPCBuYW1lLmxlbmd0aCkKLSsgICAgICAgICAgICAgICAgbV9lbW9q aV9tYXhfc2VxX2xlbiA9IG5hbWUubGVuZ3RoOwotKyAgICAgICAgfQotKyAgICAgICAgbV9sb2Fk ZWRfdW5pY29kZSA9IHRydWU7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBzdGF0aWMgdm9p ZCB1cGRhdGVfdW5pY29kZV90b19kYXRhX2RpY3QoSUJ1cy5Vbmljb2RlRGF0YSBkYXRhKSB7Ci0r ICAgICAgICB1bmljaGFyIGNvZGUgPSBkYXRhLmdldF9jb2RlKCk7Ci0rICAgICAgICBtX3VuaWNv ZGVfdG9fZGF0YV9kaWN0LnJlcGxhY2UoY29kZSwgZGF0YSk7Ci0rICAgIH0KLSsKLSsKLSsgICAg cHJpdmF0ZSBzdGF0aWMgdm9pZCB1cGRhdGVfbmFtZV90b191bmljb2Rlc19kaWN0KElCdXMuVW5p Y29kZURhdGEgZGF0YSkgewotKyAgICAgICAgdW5pY2hhciBjb2RlID0gZGF0YS5nZXRfY29kZSgp OwotKyAgICAgICAgc3RyaW5nW10gbmFtZXMgPSB7ZGF0YS5nZXRfbmFtZSgpLmRvd24oKSwgZGF0 YS5nZXRfYWxpYXMoKS5kb3duKCl9OwotKyAgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcg bmFtZSBpbiBuYW1lcykgewotKyAgICAgICAgICAgIGlmIChuYW1lID09ICIiKQotKyAgICAgICAg ICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICBib29sIGhhc19jb2RlID0gZmFsc2U7Ci0r ICAgICAgICAgICAgR0xpYi5TTGlzdDx1bmljaGFyPiBoaXRzID0KLSsgICAgICAgICAgICAgICAg ICAgIG1fbmFtZV90b191bmljb2Rlc19kaWN0Lmxvb2t1cChuYW1lKS5jb3B5KCk7Ci0rICAgICAg ICAgICAgZm9yZWFjaCAodW5pY2hhciBoaXRfY29kZSBpbiBoaXRzKSB7Ci0rICAgICAgICAgICAg ICAgIGlmIChoaXRfY29kZSA9PSBjb2RlKSB7Ci0rICAgICAgICAgICAgICAgICAgICBoYXNfY29k ZSA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgICAg fQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoIWhhc19jb2RlKSB7Ci0rICAgICAg ICAgICAgICAgIGhpdHMuYXBwZW5kKGNvZGUpOwotKyAgICAgICAgICAgICAgICBtX25hbWVfdG9f dW5pY29kZXNfZGljdC5yZXBsYWNlKG5hbWUsIGhpdHMuY29weSgpKTsKLSsgICAgICAgICAgICB9 Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSAgICAgcHJpdmF0ZSB2b2lkIHNldF9maXhlZF9z aXplKCkgewotICAgICAgICAgcmVzaXplKDIwLCAxKTsKLSAgICAgfQotQEAgLTY2NSw2ICs4MjMs NyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAg ICBtX3Njcm9sbGVkX3dpbmRvdyA9IG5ldyBFU2Nyb2xsZWRXaW5kb3coKTsKLSAgICAgICAgIHNl dF9maXhlZF9zaXplKCk7Ci0gCi0rICAgICAgICBtX3RpdGxlLnNldF90aXRsZShfKCJFbW9qaSBD aG9pY2UiKSk7Ci0gICAgICAgICBzdHJpbmcgbGFuZ3VhZ2UgPQotICAgICAgICAgICAgIElCdXMu Z2V0X2xhbmd1YWdlX25hbWUobV9jdXJyZW50X2xhbmdfaWQpOwotICAgICAgICAgbV90aXRsZS5z ZXRfbGFuZ19sYWJlbChsYW5ndWFnZSk7Ci1AQCAtNjc3LDEyICs4MzYsMTIgQEAgY2xhc3MgSUJ1 c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgR3RrLkFkanVzdG1l bnQgYWRqdXN0bWVudCA9IG1fc2Nyb2xsZWRfd2luZG93LmdldF92YWRqdXN0bWVudCgpOwotICAg ICAgICAgbV9saXN0X2JveC5zZXRfYWRqdXN0bWVudChhZGp1c3RtZW50KTsKLSAgICAgICAgIG1f bGlzdF9ib3gucm93X2FjdGl2YXRlZC5jb25uZWN0KChib3gsIGd0a3JvdykgPT4gewotLSAgICAg ICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gMDsKLSsgICAgICAgICAgICBtX2NhdGVn b3J5X2FjdGl2ZV9pbmRleCA9IC0xOwotICAgICAgICAgICAgIEVCb3hSb3cgcm93ID0gZ3Rrcm93 IGFzIEVCb3hSb3c7Ci0gICAgICAgICAgICAgc2hvd19lbW9qaV9mb3JfY2F0ZWdvcnkocm93LnRl eHQpOwotICAgICAgICAgfSk7Ci0gCi0tICAgICAgICB1aW50IG4gPSAxOwotKyAgICAgICAgdWlu dCBuID0gMDsKLSAgICAgICAgIGlmIChtX2Zhdm9yaXRlcy5sZW5ndGggPiAwKSB7Ci0gICAgICAg ICAgICAgRUJveFJvdyByb3cgPSBuZXcgRUJveFJvdyhFTU9KSV9DQVRFR09SWV9GQVZPUklURVMp OwotICAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPQotQEAgLTcxNiw5ICs4NzUs MTkgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAg ICAgICAgIGlmIChuKysgPT0gbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXgpCi0gICAgICAgICAgICAg ICAgIG1fbGlzdF9ib3guc2VsZWN0X3Jvdyhyb3cpOwotICAgICAgICAgfQotKyAgICAgICAgaWYg KG1fdW5pY29kZV9ibG9ja19saXN0Lmxlbmd0aCgpID4gMCkgewotKyAgICAgICAgICAgIEVCb3hS b3cgcm93ID0gbmV3IEVCb3hSb3coRU1PSklfQ0FURUdPUllfVU5JQ09ERSk7Ci0rICAgICAgICAg ICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgRVBh ZGRlZExhYmVsQm94KF8oRU1PSklfQ0FURUdPUllfVU5JQ09ERSksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5DRU5URVIpOwotKyAgICAgICAgICAg IHJvdy5hZGQod2lkZ2V0KTsKLSsgICAgICAgICAgICBtX2xpc3RfYm94LmFkZChyb3cpOwotKyAg ICAgICAgICAgIGlmIChuKysgPT0gbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXgpCi0rICAgICAgICAg ICAgICAgIG1fbGlzdF9ib3guc2VsZWN0X3Jvdyhyb3cpOwotKyAgICAgICAgfQotIAotICAgICAg ICAgbV9zY3JvbGxlZF93aW5kb3cuc2hvd19hbGwoKTsKLS0gICAgICAgIGlmIChtX2NhdGVnb3J5 X2FjdGl2ZV9pbmRleCA9PSAwKQotKyAgICAgICAgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4 ID09IC0xKQotICAgICAgICAgICAgIG1fbGlzdF9ib3gudW5zZWxlY3RfYWxsKCk7Ci0gICAgICAg ICBtX2xpc3RfYm94LmludmFsaWRhdGVfZmlsdGVyKCk7Ci0gICAgICAgICBtX2xpc3RfYm94LnNl dF9zZWxlY3Rpb25fbW9kZShHdGsuU2VsZWN0aW9uTW9kZS5TSU5HTEUpOwotQEAgLTczMyw2ICs5 MDIsMTEgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAg ICAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOwotICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICBtX2JhY2t3YXJkID0gY2F0ZWdvcnk7Ci0rICAgICAg ICB9IGVsc2UgaWYgKGNhdGVnb3J5ID09IEVNT0pJX0NBVEVHT1JZX1VOSUNPREUpIHsKLSsgICAg ICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IC0xOwotKyAgICAgICAgICAgIG1fc2hv d191bmljb2RlID0gdHJ1ZTsKLSsgICAgICAgICAgICBzaG93X3VuaWNvZGVfYmxvY2tzKCk7Ci0r ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICB1bm93 bmVkIEdMaWIuU0xpc3Q8dW5vd25lZCBzdHJpbmc+IGVtb2ppcyA9Ci0gICAgICAgICAgICAgICAg ICAgICBtX2NhdGVnb3J5X3RvX2Vtb2ppc19kaWN0Lmxvb2t1cChjYXRlZ29yeSk7Ci1AQCAtNzY0 LDYgKzkzOCwxMjYgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICB9Ci0gCi0gCi0rICAgIHByaXZhdGUgdm9pZCBzaG93X3VuaWNvZGVfYmxvY2tzKCkg ewotKyAgICAgICAgbV9zaG93X3VuaWNvZGUgPSB0cnVlOwotKyAgICAgICAgaWYgKG1fZGVmYXVs dF93aW5kb3dfd2lkdGggPT0gMCAmJiBtX2RlZmF1bHRfd2luZG93X2hlaWdodCA9PSAwKQotKyAg ICAgICAgICAgIGdldF9zaXplKG91dCBtX2RlZmF1bHRfd2luZG93X3dpZHRoLCBvdXQgbV9kZWZh dWx0X3dpbmRvd19oZWlnaHQpOwotKyAgICAgICAgcmVtb3ZlX2FsbF9jaGlsZHJlbigpOwotKyAg ICAgICAgc2V0X2ZpeGVkX3NpemUoKTsKLSsKLSsgICAgICAgIG1fdGl0bGUuc2V0X3RpdGxlKF8o IlVuaWNvZGUgQ2hvaWNlIikpOwotKyAgICAgICAgRVBhZGRlZExhYmVsQm94IGxhYmVsID0KLSsg ICAgICAgICAgICAgICAgbmV3IEVQYWRkZWRMYWJlbEJveChfKCJCcmluZyBiYWNrIGVtb2ppIGNo b2ljZSIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5D RU5URVIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVsRGlyZWN0 aW9uLkJBQ0tXQVJEKTsKLSsgICAgICAgIEd0ay5CdXR0b24gYnV0dG9uID0gbmV3IEd0ay5CdXR0 b24oKTsKLSsgICAgICAgIGJ1dHRvbi5hZGQobGFiZWwpOwotKyAgICAgICAgbV92Ym94LmFkZChi dXR0b24pOwotKyAgICAgICAgYnV0dG9uLnNob3dfYWxsKCk7Ci0rICAgICAgICBidXR0b24uYnV0 dG9uX3ByZXNzX2V2ZW50LmNvbm5lY3QoKHcsIGUpID0+IHsKLSsgICAgICAgICAgICBtX2NhdGVn b3J5X2FjdGl2ZV9pbmRleCA9IC0xOwotKyAgICAgICAgICAgIG1fc2hvd191bmljb2RlID0gZmFs c2U7Ci0rICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSsgICAgICAgIH0pOwotKyAgICAgICAgbV9zY3JvbGxlZF93aW5kb3cgPSBu ZXcgRVNjcm9sbGVkV2luZG93KCk7Ci0rICAgICAgICBtX3RpdGxlLnNldF9sYW5nX2xhYmVsKCIi KTsKLSsgICAgICAgIG1fdmJveC5hZGQobV9zY3JvbGxlZF93aW5kb3cpOwotKyAgICAgICAgR3Rr LlZpZXdwb3J0IHZpZXdwb3J0ID0gbmV3IEd0ay5WaWV3cG9ydChudWxsLCBudWxsKTsKLSsgICAg ICAgIG1fc2Nyb2xsZWRfd2luZG93LmFkZCh2aWV3cG9ydCk7Ci0rCi0rICAgICAgICBtX2xpc3Rf Ym94ID0gbmV3IEVMaXN0Qm94KCk7Ci0rICAgICAgICB2aWV3cG9ydC5hZGQobV9saXN0X2JveCk7 Ci0rICAgICAgICBHdGsuQWRqdXN0bWVudCBhZGp1c3RtZW50ID0gbV9zY3JvbGxlZF93aW5kb3cu Z2V0X3ZhZGp1c3RtZW50KCk7Ci0rICAgICAgICBtX2xpc3RfYm94LnNldF9hZGp1c3RtZW50KGFk anVzdG1lbnQpOwotKyAgICAgICAgbV9saXN0X2JveC5yb3dfYWN0aXZhdGVkLmNvbm5lY3QoKGJv eCwgZ3Rrcm93KSA9PiB7Ci0rICAgICAgICAgICAgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAt MTsKLSsgICAgICAgICAgICBFQm94Um93IHJvdyA9IGd0a3JvdyBhcyBFQm94Um93OwotKyAgICAg ICAgICAgIHNob3dfdW5pY29kZV9mb3JfYmxvY2socm93LnRleHQpOwotKyAgICAgICAgfSk7Ci0r Ci0rICAgICAgICB1aW50IG4gPSAwOwotKyAgICAgICAgZm9yZWFjaCAodW5vd25lZCBJQnVzLlVu aWNvZGVCbG9jayBibG9jayBpbiBtX3VuaWNvZGVfYmxvY2tfbGlzdCkgewotKyAgICAgICAgICAg IHN0cmluZyBuYW1lID0gYmxvY2suZ2V0X25hbWUoKTsKLSsgICAgICAgICAgICBFQm94Um93IHJv dyA9IG5ldyBFQm94Um93KG5hbWUpOwotKyAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRn ZXQgPQotKyAgICAgICAgICAgICAgICAgICAgbmV3IEVQYWRkZWRMYWJlbEJveChfKG5hbWUpLCBH dGsuQWxpZ24uQ0VOVEVSKTsKLSsgICAgICAgICAgICByb3cuYWRkKHdpZGdldCk7Ci0rICAgICAg ICAgICAgbV9saXN0X2JveC5hZGQocm93KTsKLSsgICAgICAgICAgICBpZiAobisrID09IG1fY2F0 ZWdvcnlfYWN0aXZlX2luZGV4KSB7Ci0rICAgICAgICAgICAgICAgIG1fbGlzdF9ib3guc2VsZWN0 X3Jvdyhyb3cpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSsgICAgICAgIHNldF9z aXplX3JlcXVlc3QoLTEsIG1fZGVmYXVsdF93aW5kb3dfaGVpZ2h0ICsgMTAwKTsKLSsgICAgICAg IG1fc2Nyb2xsZWRfd2luZG93LnNldF9wb2xpY3koR3RrLlBvbGljeVR5cGUuTkVWRVIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5Qb2xpY3lUeXBlLkFVVE9NQVRJ Qyk7Ci0rICAgICAgICBtX3Njcm9sbGVkX3dpbmRvdy5zaG93X2FsbCgpOwotKyAgICAgICAgaWYg KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID09IC0xKQotKyAgICAgICAgICAgIG1fbGlzdF9ib3gu dW5zZWxlY3RfYWxsKCk7Ci0rICAgICAgICBtX2xpc3RfYm94LmludmFsaWRhdGVfZmlsdGVyKCk7 Ci0rICAgICAgICBtX2xpc3RfYm94LnNldF9zZWxlY3Rpb25fbW9kZShHdGsuU2VsZWN0aW9uTW9k ZS5TSU5HTEUpOwotKyAgICB9Ci0rCi0rICAgIHByaXZhdGUgdm9pZCBzaG93X3VuaWNvZGVfZm9y X2Jsb2NrKHN0cmluZyBibG9ja19uYW1lKSB7Ci0rICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNv ZGUpIHsKLSsgICAgICAgICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7Ci0rICAgICAgICAgICAg c2V0X2ZpeGVkX3NpemUoKTsKLSsgICAgICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyID0g bmV3IEd0ay5Qcm9ncmVzc0JhcigpOwotKyAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19i YXIuc2V0X2VsbGlwc2l6ZShQYW5nby5FbGxpcHNpemVNb2RlLk1JRERMRSk7Ci0rICAgICAgICAg ICAgbV91bmljb2RlX3Byb2dyZXNzX2Jhci5zZXRfaGFsaWduKEd0ay5BbGlnbi5DRU5URVIpOwot KyAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2V0X3ZhbGlnbihHdGsuQWxpZ24u Q0VOVEVSKTsKLSsgICAgICAgICAgICBtX3Zib3guYWRkKG1fdW5pY29kZV9wcm9ncmVzc19iYXIp OwotKyAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2hvdygpOwotKyAgICAgICAg ICAgIHZhciBoYm94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0aW9uLkhPUklaT05UQUwsIDUp OwotKyAgICAgICAgICAgIGhib3guc2V0X2hhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKLSsgICAg ICAgICAgICBoYm94LnNldF92YWxpZ24oR3RrLkFsaWduLkNFTlRFUik7Ci0rICAgICAgICAgICAg bV92Ym94LmFkZChoYm94KTsKLSsgICAgICAgICAgICB2YXIgbGFiZWwgPSBuZXcgR3RrLkxhYmVs KF8oIkxvYWRpbmcgYSBVbmljb2RlIGRpY3Rpb25hcnk6IikpOwotKyAgICAgICAgICAgIGhib3gu cGFja19zdGFydChsYWJlbCwgZmFsc2UsIHRydWUsIDApOwotKyAgICAgICAgICAgIG1fdW5pY29k ZV9wZXJjZW50X2xhYmVsID0gbmV3IEd0ay5MYWJlbCgiIik7Ci0rICAgICAgICAgICAgaGJveC5w YWNrX3N0YXJ0KG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLCBmYWxzZSwgdHJ1ZSwgMCk7Ci0rICAg ICAgICAgICAgaGJveC5zaG93X2FsbCgpOwotKwotKyAgICAgICAgICAgIG1fdW5pY29kZV9wcm9n cmVzc19vYmplY3QuZGVzZXJpYWxpemVfdW5pY29kZS5jb25uZWN0KChpLCBuKSA9PiB7Ci0rICAg ICAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50ID0gKGRvdWJsZSlpIC8gbjsKLSsgICAgICAg ICAgICB9KTsKLSsgICAgICAgICAgICBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4gewotKyAg ICAgICAgICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyLnNldF9mcmFjdGlvbihtX3VuaWNv ZGVfcGVyY2VudCk7Ci0rICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLnNl dF90ZXh0KAotKyAgICAgICAgICAgICAgICAgICAgICAgICIlLjBmJSVcbiIucHJpbnRmKG1fdW5p Y29kZV9wZXJjZW50ICogMTAwKSk7Ci0rICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVz c19iYXIuc2hvdygpOwotKyAgICAgICAgICAgICAgICBtX3VuaWNvZGVfcGVyY2VudF9sYWJlbC5z aG93KCk7Ci0rICAgICAgICAgICAgICAgIGlmIChtX2xvYWRlZF91bmljb2RlKSB7Ci0rICAgICAg ICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfZm9yX2Jsb2NrKGJsb2NrX25hbWUpOwotKyAgICAg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIHJldHVybiAhbV9sb2FkZWRfdW5pY29kZTsK LSsgICAgICAgICAgICB9KTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rICAg ICAgICB1bmljaGFyIHN0YXJ0ID0gMDsKLSsgICAgICAgIHVuaWNoYXIgZW5kID0gMDsKLSsgICAg ICAgIGZvcmVhY2ggKHVub3duZWQgSUJ1cy5Vbmljb2RlQmxvY2sgYmxvY2sgaW4gbV91bmljb2Rl X2Jsb2NrX2xpc3QpIHsKLSsgICAgICAgICAgICBzdHJpbmcgbmFtZSA9IGJsb2NrLmdldF9uYW1l KCk7Ci0rICAgICAgICAgICAgaWYgKGJsb2NrX25hbWUgPT0gbmFtZSkgewotKyAgICAgICAgICAg ICAgICBzdGFydCA9IGJsb2NrLmdldF9zdGFydCgpOwotKyAgICAgICAgICAgICAgICBlbmQgPSBi bG9jay5nZXRfZW5kKCk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgICAgbV9s b29rdXBfdGFibGUuY2xlYXIoKTsKLSsgICAgICAgIGZvciAodW5pY2hhciBjaCA9IHN0YXJ0OyBj aCA8IGVuZDsgY2grKykgewotKyAgICAgICAgICAgIHVub3duZWQgSUJ1cy5Vbmljb2RlRGF0YT8g ZGF0YSA9Ci0rICAgICAgICAgICAgICAgICAgICBtX3VuaWNvZGVfdG9fZGF0YV9kaWN0Lmxvb2t1 cChjaCk7Ci0rICAgICAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkKLSsgICAgICAgICAgICAgICAg Y29udGludWU7Ci0rICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZy b21fdW5pY2hhcihjaCk7Ci0rICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuYXBwZW5kX2NhbmRp ZGF0ZSh0ZXh0KTsKLSsgICAgICAgIH0KLSsgICAgICAgIG1fYmFja3dhcmQgPSBibG9ja19uYW1l OwotKyAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKLSsgICAgfQotKwotKwotICAgICBw cml2YXRlIHZvaWQgc2hvd19hcnJvd19idXR0b25zKCkgewotICAgICAgICAgR3RrLkJ1dHRvbiBu ZXh0X2J1dHRvbiA9IG5ldyBHdGsuQnV0dG9uKCk7Ci0gICAgICAgICBuZXh0X2J1dHRvbi5jbGlj a2VkLmNvbm5lY3QoKCkgPT4gewotQEAgLTg0MCw2ICsxMTM0LDcgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICBsb29rdXBfZW1vamlzX2Zyb21fYW5u b3RhdGlvbihzdHJpbmcgYW5ub3RhdGlvbikgewotICAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+ PyB0b3RhbF9lbW9qaXMgPSBudWxsOwotICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHN0cmlu Zz4/IHN1Yl9lbW9qaXMgPSBudWxsOwotKyAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHVuaWNo YXI+PyBzdWJfdW5pY29kZXMgPSBudWxsOwotICAgICAgICAgaW50IGxlbmd0aCA9IGFubm90YXRp b24ubGVuZ3RoOwotICAgICAgICAgaWYgKG1faGFzX3BhcnRpYWxfbWF0Y2ggJiYgbGVuZ3RoID49 IG1fcGFydGlhbF9tYXRjaF9sZW5ndGgpIHsKLSAgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVk IHN0cmluZyBrZXkgaW4KLUBAIC04NzcsNiArMTE3MiwyMiBAQCBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgZm9yZWFjaCAodW5vd25lZCBz dHJpbmcgZW1vamkgaW4gc3ViX2Vtb2ppcykKLSAgICAgICAgICAgICAgICAgdG90YWxfZW1vamlz LmFwcGVuZChlbW9qaSk7Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAobGVuZ3RoID49IG1fcGFy dGlhbF9tYXRjaF9sZW5ndGgpIHsKLSsgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmlu ZyBrZXkgaW4gbV9uYW1lX3RvX3VuaWNvZGVzX2RpY3QuZ2V0X2tleXMoKSkgewotKyAgICAgICAg ICAgICAgICBib29sIG1hdGNoZWQgPSBmYWxzZTsKLSsgICAgICAgICAgICAgICAgaWYgKGtleS5p bmRleF9vZihhbm5vdGF0aW9uKSA+PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo ZWQgPSB0cnVlOwotKyAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZWQpCi0rICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgc3ViX3VuaWNvZGVzID0gbV9uYW1l X3RvX3VuaWNvZGVzX2RpY3QubG9va3VwKGtleSk7Ci0rICAgICAgICAgICAgICAgIGZvcmVhY2gg KHVuaWNoYXIgY29kZSBpbiBzdWJfdW5pY29kZXMpIHsKLSsgICAgICAgICAgICAgICAgICAgIHN0 cmluZyBjaCA9IGNvZGUudG9fc3RyaW5nKCk7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAodG90 YWxfZW1vamlzLmZpbmRfY3VzdG9tKGNoLCBHTGliLnN0cmNtcCkgPT0gbnVsbCkgewotKyAgICAg ICAgICAgICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcy5hcHBlbmQoY2gpOwotKyAgICAgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotKyAgICAgICAg fQotICAgICAgICAgcmV0dXJuIHRvdGFsX2Vtb2ppczsKLSAgICAgfQotIAotQEAgLTEwNDksNTgg KzEzNjAsOTkgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewot ICAgICAgICAgICAgIGdyaWQuc2hvd19hbGwoKTsKLSAgICAgICAgICAgICBzdHJpbmcgdGV4dCA9 IG1fbG9va3VwX3RhYmxlLmdldF9jYW5kaWRhdGUoY3Vyc29yKS50ZXh0OwotICAgICAgICAgICAg IHVub3duZWQgSUJ1cy5FbW9qaURhdGE/IGRhdGEgPSBtX2Vtb2ppX3RvX2RhdGFfZGljdC5sb29r dXAodGV4dCk7Ci0tICAgICAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkgewotLSAgICAgICAgICAg ICAgICAvLyBUT0RPOiBQcm92aWRlIGEgY3VzdG9tIGRlc2NyaXB0aW9uIGFuZCBhbm5vdGF0aW9u IGZvcgotLSAgICAgICAgICAgICAgICAvLyB0aGUgZmF2b3JpdGUgZW1vamlzLgotLSAgICAgICAg ICAgICAgICBFUGFkZGVkTGFiZWxCb3ggd2lkZ2V0ID0gbmV3IEVQYWRkZWRMYWJlbEJveCgKLS0g ICAgICAgICAgICAgICAgICAgICAgICBfKCJEZXNjcmlwdGlvbjogJXMiKS5wcmludGYoXygiTm9u ZSIpKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBHdGsuQWxpZ24uU1RBUlQpOwotLSAgICAg ICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdldCk7Ci0tICAgICAgICAgICAgICAgIHdpZGdldC5z aG93X2FsbCgpOwotLSAgICAgICAgICAgICAgICBzaG93X2NvZGVfcG9pbnRfZGVzY3JpcHRpb24o dGV4dCk7Ci0rICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgewotKyAgICAgICAgICAgICAg ICBzaG93X2Vtb2ppX2Rlc2NyaXB0aW9uKGRhdGEsIHRleHQpOwotICAgICAgICAgICAgICAgICBy ZXR1cm47Ci0tICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgdW5vd25lZCBz dHJpbmcgZGVzY3JpcHRpb24gPSBkYXRhLmdldF9kZXNjcmlwdGlvbigpOwotLSAgICAgICAgICAg ICAgICBFUGFkZGVkTGFiZWxCb3ggd2lkZ2V0ID0gbmV3IEVQYWRkZWRMYWJlbEJveCgKLS0gICAg ICAgICAgICAgICAgICAgICAgICBfKCJEZXNjcmlwdGlvbjogJXMiKS5wcmludGYoZGVzY3JpcHRp b24pLAotLSAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5TVEFSVCk7Ci0tICAgICAg ICAgICAgICAgIG1fdmJveC5hZGQod2lkZ2V0KTsKLS0gICAgICAgICAgICAgICAgd2lkZ2V0LnNo b3dfYWxsKCk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIHVub3duZWQgR0xpYi5TTGlz dDx1bm93bmVkIHN0cmluZz4/IGFubm90YXRpb25zID0KLS0gICAgICAgICAgICAgICAgICAgIGRh dGEuZ2V0X2Fubm90YXRpb25zKCk7Ci0tICAgICAgICAgICAgdmFyIGJ1ZmYgPSBuZXcgR0xpYi5T dHJpbmdCdWlsZGVyKCk7Ci0tICAgICAgICAgICAgaW50IGkgPSAwOwotLSAgICAgICAgICAgIGZv cmVhY2ggKHVub3duZWQgc3RyaW5nIGFubm90YXRpb24gaW4gYW5ub3RhdGlvbnMpIHsKLS0gICAg ICAgICAgICAgICAgaWYgKGkrKyA9PSAwKQotLSAgICAgICAgICAgICAgICAgICAgYnVmZi5hcHBl bmRfcHJpbnRmKF8oIkFubm90YXRpb25zOiAlcyIpLCBhbm5vdGF0aW9uKTsKLS0gICAgICAgICAg ICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgICAgYnVmZi5hcHBlbmRfcHJpbnRmKCIgfCAl cyIsIGFubm90YXRpb24pOwotLSAgICAgICAgICAgICAgICBpZiAoYnVmZi5zdHIuY2hhcl9jb3Vu dCgpID4gMzApIHsKLS0gICAgICAgICAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQg PQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KGJ1ZmYu c3RyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0 ay5BbGlnbi5TVEFSVCk7Ci0tICAgICAgICAgICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdldCk7 Ci0tICAgICAgICAgICAgICAgICAgICB3aWRnZXQuc2hvd19hbGwoKTsKLS0gICAgICAgICAgICAg ICAgICAgIGJ1ZmYuZXJhc2UoKTsKLSsgICAgICAgICAgICBpZiAodGV4dC5jaGFyX2NvdW50KCkg PD0gMSkgewotKyAgICAgICAgICAgICAgICB1bmljaGFyIGNvZGUgPSB0ZXh0LmdldF9jaGFyKCk7 Ci0rICAgICAgICAgICAgICAgIHVub3duZWQgSUJ1cy5Vbmljb2RlRGF0YT8gdWRhdGEgPQotKyAg ICAgICAgICAgICAgICAgICAgICAgIG1fdW5pY29kZV90b19kYXRhX2RpY3QubG9va3VwKGNvZGUp OwotKyAgICAgICAgICAgICAgICBpZiAodWRhdGEgIT0gbnVsbCkgewotKyAgICAgICAgICAgICAg ICAgICAgc2hvd191bmljb2RlX2Rlc2NyaXB0aW9uKHVkYXRhLCB0ZXh0KTsKLSsgICAgICAgICAg ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLS0g ICAgICAgICAgICBpZiAoYnVmZi5zdHIgIT0gIiIpIHsKLS0gICAgICAgICAgICAgICAgRVBhZGRl ZExhYmVsQm94IHdpZGdldCA9IG5ldyBFUGFkZGVkTGFiZWxCb3goYnVmZi5zdHIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0 ay5BbGlnbi5TVEFSVCk7Ci0rICAgICAgICAgICAgLy8gVE9ETzogUHJvdmlkZSBhIGN1c3RvbSBk ZXNjcmlwdGlvbiBhbmQgYW5ub3RhdGlvbiBmb3IKLSsgICAgICAgICAgICAvLyB0aGUgZmF2b3Jp dGUgZW1vamlzLgotKyAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPSBuZXcgRVBh ZGRlZExhYmVsQm94KAotKyAgICAgICAgICAgICAgICAgICAgICAgIF8oIkRlc2NyaXB0aW9uOiAl cyIpLnByaW50ZihfKCJOb25lIikpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGln bi5TVEFSVCk7Ci0rICAgICAgICAgICAgbV92Ym94LmFkZCh3aWRnZXQpOwotKyAgICAgICAgICAg IHdpZGdldC5zaG93X2FsbCgpOwotKyAgICAgICAgICAgIHNob3dfY29kZV9wb2ludF9kZXNjcmlw dGlvbih0ZXh0KTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQg c2hvd19lbW9qaV9kZXNjcmlwdGlvbihJQnVzLkVtb2ppRGF0YSBkYXRhLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICB0ZXh0KSB7Ci0rICAg ICAgICB1bm93bmVkIHN0cmluZyBkZXNjcmlwdGlvbiA9IGRhdGEuZ2V0X2Rlc2NyaXB0aW9uKCk7 Ci0rICAgICAgICB7Ci0rICAgICAgICAgICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9IG5ldyBF UGFkZGVkTGFiZWxCb3goCi0rICAgICAgICAgICAgICAgICAgICBfKCJEZXNjcmlwdGlvbjogJXMi KS5wcmludGYoZGVzY3JpcHRpb24pLAotKyAgICAgICAgICAgICAgICAgICAgR3RrLkFsaWduLlNU QVJUKTsKLSsgICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdldCk7Ci0rICAgICAgICAgICAgd2lk Z2V0LnNob3dfYWxsKCk7Ci0rICAgICAgICB9Ci0rICAgICAgICB1bm93bmVkIEdMaWIuU0xpc3Q8 dW5vd25lZCBzdHJpbmc+PyBhbm5vdGF0aW9ucyA9Ci0rICAgICAgICAgICAgICAgIGRhdGEuZ2V0 X2Fubm90YXRpb25zKCk7Ci0rICAgICAgICB2YXIgYnVmZiA9IG5ldyBHTGliLlN0cmluZ0J1aWxk ZXIoKTsKLSsgICAgICAgIGludCBpID0gMDsKLSsgICAgICAgIGZvcmVhY2ggKHVub3duZWQgc3Ry aW5nIGFubm90YXRpb24gaW4gYW5ub3RhdGlvbnMpIHsKLSsgICAgICAgICAgICBpZiAoaSsrID09 IDApCi0rICAgICAgICAgICAgICAgIGJ1ZmYuYXBwZW5kX3ByaW50ZihfKCJBbm5vdGF0aW9uczog JXMiKSwgYW5ub3RhdGlvbik7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBi dWZmLmFwcGVuZF9wcmludGYoIiB8ICVzIiwgYW5ub3RhdGlvbik7Ci0rICAgICAgICAgICAgaWYg KGJ1ZmYuc3RyLmNoYXJfY291bnQoKSA+IDMwKSB7Ci0rICAgICAgICAgICAgICAgIEVQYWRkZWRM YWJlbEJveCB3aWRnZXQgPQotKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFUGFkZGVkTGFi ZWxCb3goYnVmZi5zdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHdGsuQWxpZ24uU1RBUlQpOwotICAgICAgICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdl dCk7Ci0gICAgICAgICAgICAgICAgIHdpZGdldC5zaG93X2FsbCgpOwotKyAgICAgICAgICAgICAg ICBidWZmLmVyYXNlKCk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIHNob3dfY29kZV9w b2ludF9kZXNjcmlwdGlvbih0ZXh0KTsKLSAgICAgICAgIH0KLSsgICAgICAgIGlmIChidWZmLnN0 ciAhPSAiIikgewotKyAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPSBuZXcgRVBh ZGRlZExhYmVsQm94KGJ1ZmYuc3RyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5TVEFSVCk7Ci0rICAgICAgICAgICAg bV92Ym94LmFkZCh3aWRnZXQpOwotKyAgICAgICAgICAgIHdpZGdldC5zaG93X2FsbCgpOwotKyAg ICAgICAgfQotKyAgICAgICAgc2hvd19jb2RlX3BvaW50X2Rlc2NyaXB0aW9uKHRleHQpOwotKyAg ICB9Ci0rCi0rICAgIHByaXZhdGUgdm9pZCBzaG93X3VuaWNvZGVfZGVzY3JpcHRpb24oSUJ1cy5V bmljb2RlRGF0YSBkYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cmluZyAgICAgICAgICAgdGV4dCkgewotKyAgICAgICAgdW5vd25lZCBzdHJpbmcgbmFt ZSA9IGRhdGEuZ2V0X25hbWUoKTsKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBFUGFkZGVkTGFi ZWxCb3ggd2lkZ2V0ID0gbmV3IEVQYWRkZWRMYWJlbEJveCgKLSsgICAgICAgICAgICAgICAgICAg IF8oIk5hbWU6ICVzIikucHJpbnRmKG5hbWUpLAotKyAgICAgICAgICAgICAgICAgICAgR3RrLkFs aWduLlNUQVJUKTsKLSsgICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdldCk7Ci0rICAgICAgICAg ICAgd2lkZ2V0LnNob3dfYWxsKCk7Ci0rICAgICAgICB9Ci0rICAgICAgICB1bm93bmVkIHN0cmlu ZyBhbGlhcyA9IGRhdGEuZ2V0X2FsaWFzKCk7Ci0rICAgICAgICB7Ci0rICAgICAgICAgICAgRVBh ZGRlZExhYmVsQm94IHdpZGdldCA9IG5ldyBFUGFkZGVkTGFiZWxCb3goCi0rICAgICAgICAgICAg ICAgICAgICBfKCJBbGlhczogJXMiKS5wcmludGYoYWxpYXMpLAotKyAgICAgICAgICAgICAgICAg ICAgR3RrLkFsaWduLlNUQVJUKTsKLSsgICAgICAgICAgICBtX3Zib3guYWRkKHdpZGdldCk7Ci0r ICAgICAgICAgICAgd2lkZ2V0LnNob3dfYWxsKCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBzaG93 X2NvZGVfcG9pbnRfZGVzY3JpcHRpb24odGV4dCk7Ci0gICAgIH0KLSAKLSAKLSAgICAgcHJpdmF0 ZSB2b2lkIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCkgewotICAgICAgICAgbV9lbnRlcl9ub3RpZnlf ZW5hYmxlID0gdHJ1ZTsKLSAgICAgICAgIG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUgPSBm YWxzZTsKLS0gICAgICAgIGlmIChtX2xvb3AuaXNfcnVubmluZygpKQotLSAgICAgICAgICAgIHNo b3dfY2F0ZWdvcnlfbGlzdCgpOwotKyAgICAgICAgaWYgKG1fbG9vcC5pc19ydW5uaW5nKCkpIHsK LSsgICAgICAgICAgICBpZiAobV9zaG93X3VuaWNvZGUpCi0rICAgICAgICAgICAgICAgIHNob3df dW5pY29kZV9ibG9ja3MoKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIHNo b3dfY2F0ZWdvcnlfbGlzdCgpOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gCi1AQCAtMTE2NSwx OSArMTUxNyw0MSBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7 Ci0gICAgIH0KLSAKLSAKLS0gICAgcHJpdmF0ZSB2b2lkIGNhdGVnb3J5X2xpc3RfY3Vyc29yX21v dmUodWludCBrZXl2YWwpIHsKLSsgICAgcHJpdmF0ZSBib29sIGNhdGVnb3J5X2xpc3RfY3Vyc29y X21vdmUodWludCBrZXl2YWwpIHsKLSAgICAgICAgIEdMaWIuTGlzdDx3ZWFrIEd0ay5XaWRnZXQ+ IGxpc3QgPSBtX2xpc3RfYm94LmdldF9jaGlsZHJlbigpOwotLSAgICAgICAgaWYgKGtleXZhbCA9 PSBHZGsuS2V5LkRvd24pIHsKLS0gICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9 Ci0tICAgICAgICAgICAgICAgICAgICArK21fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ICUgKChpbnQp bGlzdC5sZW5ndGgoKSArIDEpOwotLSAgICAgICAgfSBlbHNlIGlmIChrZXl2YWwgPT0gR2RrLktl eS5VcCkgewotKyAgICAgICAgaW50IGxlbmd0aCA9IChpbnQpbGlzdC5sZW5ndGgoKTsKLSsgICAg ICAgIGlmIChsZW5ndGggPT0gMCkKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAg ICBzd2l0Y2goa2V5dmFsKSB7Ci0rICAgICAgICBjYXNlIEdkay5LZXkuRG93bjoKLSsgICAgICAg ICAgICBpZiAoKyttX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9PSBsZW5ndGgpCi0rICAgICAgICAg ICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gMDsKLSsgICAgICAgICAgICBicmVhazsK LSsgICAgICAgIGNhc2UgR2RrLktleS5VcDoKLSAgICAgICAgICAgICBpZiAoLS1tX2NhdGVnb3J5 X2FjdGl2ZV9pbmRleCA8IDApCi0tICAgICAgICAgICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2 ZV9pbmRleCA9IChpbnQpbGlzdC5sZW5ndGgoKTsKLSsgICAgICAgICAgICAgICAgICAgIG1fY2F0 ZWdvcnlfYWN0aXZlX2luZGV4ID0gbGVuZ3RoIC0gMTsKLSsgICAgICAgICAgICBicmVhazsKLSsg ICAgICAgIGNhc2UgR2RrLktleS5Ib21lOgotKyAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZl X2luZGV4ID0gMDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR2RrLktleS5F bmQ6Ci0rICAgICAgICAgICAgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSBsZW5ndGggLSAxOwot KyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICAgICAgR3RrLkFkanVzdG1lbnQg YWRqdXN0bWVudCA9IG1fbGlzdF9ib3guZ2V0X2FkanVzdG1lbnQoKTsKLS0gICAgICAgIG1fc2Ny b2xsZWRfd2luZG93LnNldF9oYWRqdXN0bWVudChuZXcgR3RrLkFkanVzdG1lbnQoMCwgMCwgMCwg MCwgMCwgMCkpOwotLSAgICAgICAgbV9zY3JvbGxlZF93aW5kb3cuc2V0X3ZhZGp1c3RtZW50KGFk anVzdG1lbnQpOwotLSAgICAgICAgc2hvd19jYXRlZ29yeV9saXN0KCk7Ci0rICAgICAgICB2YXIg cm93ID0gbV9saXN0X2JveC5nZXRfc2VsZWN0ZWRfcm93KCk7Ci0rICAgICAgICBpZiAocm93ICE9 IG51bGwpCi0rICAgICAgICAgICAgbV9saXN0X2JveC51bnNlbGVjdF9yb3cocm93KTsKLSsgICAg ICAgIGlmIChtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA+PSAwKSB7Ci0rICAgICAgICAgICAgcm93 ID0gbV9saXN0X2JveC5nZXRfcm93X2F0X2luZGV4KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KTsK LSsgICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKLSsgICAgICAgIH0gZWxz ZSB7Ci0rICAgICAgICAgICAgcm93ID0gbV9saXN0X2JveC5nZXRfcm93X2F0X2luZGV4KDApOwot KyAgICAgICAgfQotKyAgICAgICAgR3RrLkFsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDAsIDAg fTsKLSsgICAgICAgIHJvdy5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2MpOwotKyAgICAgICAgdmFy IGFkanVzdG1lbnQgPSBtX3Njcm9sbGVkX3dpbmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKLSsgICAg ICAgIGFkanVzdG1lbnQuY2xhbXBfcGFnZShhbGxvYy55LCBhbGxvYy55ICsgYWxsb2MuaGVpZ2h0 KTsKLSsgICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gCi0gCi1AQCAtMTIxMSw3ICsxNTg1 LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAg ICAgICAgICAgICBrZXl2YWwgPSBHZGsuS2V5LlVwOwotICAgICAgICAgICAgIGVsc2UgaWYgKGtl eXZhbCA9PSBHZGsuS2V5LlJpZ2h0KQotICAgICAgICAgICAgICAgICBrZXl2YWwgPSBHZGsuS2V5 LkRvd247Ci0tICAgICAgICAgICAgY2F0ZWdvcnlfbGlzdF9jdXJzb3JfbW92ZShrZXl2YWwpOwot KyAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeV9saXN0X2N1cnNvcl9tb3ZlKGtleXZhbCk7Ci0g ICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotQEAgLTEyMjcsNyArMTYw MSw3IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAg ICAgICAgICBlbHNlIGlmIChrZXl2YWwgPT0gR2RrLktleS5VcCkKLSAgICAgICAgICAgICAgICAg Y2FuZGlkYXRlX3BhbmVsX2N1cnNvcl91cCgpOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAg ICAgICBjYXRlZ29yeV9saXN0X2N1cnNvcl9tb3ZlKGtleXZhbCk7Ci0rICAgICAgICAgICAgcmV0 dXJuIGNhdGVnb3J5X2xpc3RfY3Vyc29yX21vdmUoa2V5dmFsKTsKLSAgICAgICAgIH0KLSAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICB9Ci1AQCAtMTI2MiwxMiArMTYzNiwyNSBAQCBjbGFzcyBJ QnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgIH0KLSsgICAgICAgIGlmICghbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkKLSsg ICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnlfbGlzdF9jdXJzb3JfbW92ZShrZXl2YWwpOwotICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gCi0gCi0gICAgIHByaXZhdGUgYm9vbCBrZXlf cHJlc3NfZXNjYXBlKCkgewotLSAgICAgICAgaWYgKG1fYmFja3dhcmRfaW5kZXggPj0gMCAmJiBt X2JhY2t3YXJkICE9IG51bGwpIHsKLSsgICAgICAgIGlmIChtX3Nob3dfdW5pY29kZSkgewotKyAg ICAgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKSB7Ci0rICAgICAgICAg ICAgICAgIG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUgPSBmYWxzZTsKLSsgICAgICAgICAg ICAgICAgc2hvd191bmljb2RlX2Jsb2NrcygpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBtX3Nob3dfdW5pY29k ZSA9IGZhbHNlOwotKyAgICAgICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IC0x OwotKyAgICAgICAgICAgICAgICBoaWRlX2NhbmRpZGF0ZV9wYW5lbCgpOwotKyAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9IGVsc2UgaWYgKG1f YmFja3dhcmRfaW5kZXggPj0gMCAmJiBtX2JhY2t3YXJkICE9IG51bGwpIHsKLSAgICAgICAgICAg ICBzaG93X2Vtb2ppX2Zvcl9jYXRlZ29yeShtX2JhY2t3YXJkKTsKLSAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgICAgIH0gZWxzZSBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJs ZSkgewotQEAgLTEyODcsMTAgKzE2NzQsMTMgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2li bGUpIHsKLSAgICAgICAgICAgICB1aW50IGluZGV4ID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNv cl9wb3MoKTsKLSAgICAgICAgICAgICBjYW5kaWRhdGVfcGFuZWxfc2VsZWN0X2luZGV4KGluZGV4 KTsKLS0gICAgICAgIH0gZWxzZSBpZiAobV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPiAwKSB7Ci0r ICAgICAgICB9IGVsc2UgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID49IDApIHsKLSAgICAg ICAgICAgICBHdGsuTGlzdEJveFJvdyBndGtyb3cgPSBtX2xpc3RfYm94LmdldF9zZWxlY3RlZF9y b3coKTsKLSAgICAgICAgICAgICBFQm94Um93IHJvdyA9IGd0a3JvdyBhcyBFQm94Um93OwotLSAg ICAgICAgICAgIHNob3dfZW1vamlfZm9yX2NhdGVnb3J5KHJvdy50ZXh0KTsKLSsgICAgICAgICAg ICBpZiAobV9zaG93X3VuaWNvZGUpCi0rICAgICAgICAgICAgICAgIHNob3dfdW5pY29kZV9mb3Jf YmxvY2socm93LnRleHQpOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgc2hv d19lbW9qaV9mb3JfY2F0ZWdvcnkocm93LnRleHQpOwotICAgICAgICAgfQotICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgIH0KLUBAIC0xMzgwLDYgKzE3NzAsNyBAQCBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9p c192aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICBtX3Jlc3VsdCA9IG51bGw7Ci0gICAgICAgICBt X2VudGVyX25vdGlmeV9lbmFibGUgPSB0cnVlOwotKyAgICAgICAgbV9zaG93X3VuaWNvZGUgPSBm YWxzZTsKLSAKLSAgICAgICAgIC8qIExldCBndGsgcmVjYWxjdWxhdGUgdGhlIHdpbmRvdyBzaXpl LiAqLwotICAgICAgICAgcmVzaXplKDEsIDEpOwotQEAgLTEzOTksOCArMTc5MCw5IEBAIGNsYXNz IElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAqIHByZXZl bnRpb24gbG9naWM6Ci0gICAgICAgICAgKiBodHRwczovL21haWwuZ25vbWUub3JnL2FyY2hpdmVz L2d0ay1kZXZlbC1saXN0LzIwMTctTWF5L21zZzAwMDI2Lmh0bWwKLSAgICAgICAgICAqLwotLSAg ICAgICAgdWludDMyIHRpbWVzdGFtcCA9IGV2ZW50LmdldF90aW1lKCk7Ci0tICAgICAgICBwcmVz ZW50X3dpdGhfdGltZSh0aW1lc3RhbXApOwotKyAgICAgICAgLy91aW50MzIgdGltZXN0YW1wID0g ZXZlbnQuZ2V0X3RpbWUoKTsKLSsgICAgICAgIC8vcHJlc2VudF93aXRoX3RpbWUodGltZXN0YW1w KTsKLSsgICAgICAgIHByZXNlbnRfY2VudHJhbGl6ZShldmVudCk7Ci0gCi0gICAgICAgICBHZGsu RGV2aWNlIHBvaW50ZXI7Ci0gI2lmIFZBTEFfMF8zNAotQEAgLTE2NDYsMTggKzIwMzgsMjQgQEAg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgR3Rr LkFsbG9jYXRpb24gYWxsb2NhdGlvbjsKLSAgICAgICAgIGdldF9hbGxvY2F0aW9uKG91dCBhbGxv Y2F0aW9uKTsKLSAgICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhOwotKyAgICAgICAg R2RrLlJlY3RhbmdsZSB3b3JrX2FyZWE7Ci0gI2lmIFZBTEFfMF8zNAotICAgICAgICAgR2RrLkRp c3BsYXkgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7Ci0gICAgICAgICBHZGsu TW9uaXRvciBtb25pdG9yID0gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3codGhpcy5nZXRf d2luZG93KCkpOwotICAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRfZ2VvbWV0cnko KTsKLSsgICAgICAgIHdvcmtfYXJlYSA9IG1vbml0b3IuZ2V0X3dvcmthcmVhKCk7Ci0gI2Vsc2UK LSAgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOwot ICAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3dpbmRvdyh0 aGlzLmdldF93aW5kb3coKSk7Ci0gICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnko bW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEpOwotKyAgICAgICAgd29ya19hcmVhID0gc2Ny ZWVuLmdldF9tb25pdG9yX3dvcmthcmVhKG1vbml0b3JfbnVtKTsKLSAjZW5kaWYKLSAgICAgICAg IGludCB4ID0gKG1vbml0b3JfYXJlYS54ICsgbW9uaXRvcl9hcmVhLndpZHRoIC0gYWxsb2NhdGlv bi53aWR0aCkvMjsKLSAgICAgICAgIGludCB5ID0gKG1vbml0b3JfYXJlYS55ICsgbW9uaXRvcl9h cmVhLmhlaWdodAotICAgICAgICAgICAgICAgICAgLSBhbGxvY2F0aW9uLmhlaWdodCkvMjsKLSsg ICAgICAgIC8vIERvIG5vdCBoaWRlIGEgYm90dG9tIHBhbmVsIGluIFhGQ0U0Ci0rICAgICAgICBp ZiAod29ya19hcmVhLnkgPCB5KQotKyAgICAgICAgICAgIHkgPSB3b3JrX2FyZWEueTsKLSAgICAg ICAgIG1vdmUoeCwgeSk7Ci0gCi0gICAgICAgICB1aW50MzIgdGltZXN0YW1wID0gZXZlbnQuZ2V0 X3RpbWUoKTsKLUBAIC0xNzIzLDcgKzIxMjEsNiBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5B cHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgc3RyaW5nPyBmYXZvcml0ZSA9IHVub3du ZWRfZmF2b3JpdGVzW2ldOwotICAgICAgICAgICAgIC8vIEF2b2lkIGdzZXR0aW5nIHZhbHVlIGVy cm9yIGJ5IG1hbnVhbCBzZXR0aW5nCi0gICAgICAgICAgICAgR0xpYi5yZXR1cm5faWZfZmFpbChm YXZvcml0ZSAhPSBudWxsKTsKLS0gICAgICAgICAgICBHTGliLnJldHVybl9pZl9mYWlsKGZhdm9y aXRlICE9ICIiKTsKLSAgICAgICAgICAgICBtX2Zhdm9yaXRlcyArPSBmYXZvcml0ZTsKLSAgICAg ICAgIH0KLSAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCB1bm93bmVkX2Zhdm9yaXRlX2Fubm90 YXRpb25zLmxlbmd0aDsgaSsrKSB7Ci1AQCAtMTczMyw0ICsyMTMwLDE5IEBAIGNsYXNzIElCdXNF bW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIH0KLSAgICAgICAgIHVw ZGF0ZV9mYXZvcml0ZV9lbW9qaV9kaWN0KCk7Ci0gICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSBz dGF0aWMgR0xpYi5PYmplY3QgZ2V0X2xvYWRfcHJvZ3Jlc3Nfb2JqZWN0KCkgewotKyAgICAgICAg ICAgIGlmIChtX3VuaWNvZGVfcHJvZ3Jlc3Nfb2JqZWN0ID09IG51bGwpCi0rICAgICAgICAgICAg ICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QgPSBuZXcgTG9hZFByb2dyZXNzT2JqZWN0KCk7 Ci0rICAgICAgICAgICAgcmV0dXJuIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QgYXMgR0xpYi5P YmplY3Q7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHN0YXRpYyB2b2lkIGxvYWRfdW5pY29k ZV9kaWN0KCkgewotKyAgICAgICAgaWYgKG1fdW5pY29kZV9ibG9ja19saXN0Lmxlbmd0aCgpID09 IDApCi0rICAgICAgICAgICAgbWFrZV91bmljb2RlX2Jsb2NrX2RpY3QoKTsKLSsgICAgICAgIGlm IChtX25hbWVfdG9fdW5pY29kZXNfZGljdC5zaXplKCkgPT0gMCkKLSsgICAgICAgICAgICBtYWtl X3VuaWNvZGVfbmFtZV9kaWN0KElCdXNFbW9qaWVyLmdldF9sb2FkX3Byb2dyZXNzX29iamVjdCgp KTsKLSsgICAgfQotIH0KLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYSBiL3Vp L2d0azMvZW1vamllcmFwcC52YWxhCi1pbmRleCA2NjE1ZjIyYi4uZDgxNjM1MmUgMTAwNjQ0Ci0t LS0gYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyYXBwLnZh bGEKLUBAIC0xNzYsNiArMTc2LDggQEAgcHVibGljIGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBB cHBsaWNhdGlvbiB7Ci0gICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cnYo ImZhdm9yaXRlcyIpLAotICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2 KCJmYXZvcml0ZS1hbm5vdGF0aW9ucyIpKTsKLSAKLSsgICAgICAgIElCdXNFbW9qaWVyLmxvYWRf dW5pY29kZV9kaWN0KCk7Ci0rCi0gICAgICAgICBhY3RpdmF0ZV9kaWFsb2coY29tbWFuZF9saW5l KTsKLSAKLSAgICAgICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci1kaWZmIC0tZ2l0IGEv dWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaCBiL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKLWlu ZGV4IGVkODg4NmE4Li4zYjQyMGIyMSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvaWJ1c2Vtb2ppZGlh bG9nLmgKLSsrKyBiL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKLUBAIC0xLDcgKzEsNyBAQAot IC8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmls OyAtKi0gKi8KLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGJ1cyAtIFRoZSBJbnB1dCBC dXMKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBI YXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC0xOTYsNSArMTk2LDEyIEBAIHZvaWQgICAgICAg ICAgaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoX2xlbmd0aAotICAqLwotIHZvaWQgICAg ICAgICAgaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoX2NvbmRpdGlvbgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpbnQgICAgICAgICBj b25kaXRpb24pOwotKy8qKgotKyAqIGlidXNfZW1vamllcl9sb2FkX3VuaWNvZGVfZGljdDoKLSsg KgotKyAqIExvYWQgdGhlIGRpY3Rpb25hcnkgb2YgI0lCdXNVbmljb2RlRGF0YS4KLSsgKi8KLSt2 b2lkICAgICAgICAgIGlidXNfZW1vamllcl9sb2FkX3VuaWNvZGVfZGljdCAgICAgICh2b2lkKTsK LSsKLSBHX0VORF9ERUNMUwotICNlbmRpZgotZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFuZWwudmFs YSBiL3VpL2d0azMvcGFuZWwudmFsYQotaW5kZXggNGYwMzJmNmYuLmJjYjNlZDc1IDEwMDY0NAot LS0tIGEvdWkvZ3RrMy9wYW5lbC52YWxhCi0rKysgYi91aS9ndGszL3BhbmVsLnZhbGEKLUBAIC0z LDcgKzMsNyBAQAotICAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICoKLSAgKiBDb3B5cmlnaHQo YykgMjAxMS0yMDE0IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENv cHlyaWdodChjKSAyMDE1LTIwMTcgVGFrYW8gRnVqd2lhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rICogQ29weXJpZ2h0KGMpIDIwMTUtMjAxOCBUYWthbyBGdWp3aWFyYSA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtODcxLDYgKzg3 MSw3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgIElC dXNFbW9qaWVyLnNldF9hbm5vdGF0aW9uX2xhbmcoCi0gICAgICAgICAgICAgICAgICAgICBtX3Nl dHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImxhbmciKSk7Ci0gICAgICAgICAgICAgbV9lbW9qaWVy X3NldF9lbW9qaV9sYW5nX2lkID0gMDsKLSsgICAgICAgICAgICBJQnVzRW1vamllci5sb2FkX3Vu aWNvZGVfZGljdCgpOwotICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0pOwot ICAgICB9Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDRjZmQ1YWQ3YzZkMDcxY2ZlZjZjN2Q2NzhjYzAy N2VhNDgwYjhmYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDYgRmViIDIwMTggMTE6MDI6MDkg KzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHR5cG8gaW4gaWJ1c3VuaWNvZGUuYwotCi1SZXZp ZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzQwNzQwMDQzCi0tLS0KLSBz cmMvaWJ1c3VuaWNvZGUuYyAgICB8IDUgKysrLS0KLSB1aS9ndGszL2Vtb2ppZXIudmFsYSB8IDQg LS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXN1bmljb2RlLmMgYi9zcmMvaWJ1c3VuaWNvZGUuYwotaW5k ZXggODU1OTgxOWQuLmFhYzljMTM1IDEwMDY0NAotLS0tIGEvc3JjL2lidXN1bmljb2RlLmMKLSsr KyBiL3NyYy9pYnVzdW5pY29kZS5jCi1AQCAtNDEyLDcgKzQxMiw4IEBAIGlidXNfdW5pY29kZV9k YXRhX2xpc3RfZGVzZXJpYWxpemUgKEdWYXJpYW50ICp2YXJpYW50LAotICAgICAgICAgICAgICAg ICBJQlVTX1VOSUNPREVfREVTRVJJQUxJWkVfU0lHTkFMTF9TVFIsCi0gICAgICAgICAgICAgICAg IEdfT0JKRUNUX1RZUEUgKHNvdXJjZV9vYmplY3QpKTsKLSAgICAgICAgIGlmICghaGFzX3NpZ25h bCkgewotLSAgICAgICAgICAgIGNvbnN0IGdjaGFyIHR5cGVfbmFtZSA9IGdfdHlwZV9uYW1lIChz b3VyY2Vfb2JqZWN0KTsKLSsgICAgICAgICAgICBjb25zdCBnY2hhciAqdHlwZV9uYW1lID0KLSsg ICAgICAgICAgICAgICAgICAgIGdfdHlwZV9uYW1lIChHX09CSkVDVF9UWVBFIChzb3VyY2Vfb2Jq ZWN0KSk7Ci0gICAgICAgICAgICAgZ193YXJuaW5nICgiR09iamVjdCAlcyBkb2VzIG5vdCBoYXZl IHRoZSBzaWduYWwgXCIlc1wiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSA/ IHR5cGVfbmFtZSA6ICIobnVsbCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19VTklD T0RFX0RFU0VSSUFMSVpFX1NJR05BTExfU1RSKTsKLUBAIC02NzcsNyArNjc4LDcgQEAgaWJ1c191 bmljb2RlX2Jsb2NrX2NsYXNzX2luaXQgKElCdXNVbmljb2RlQmxvY2tDbGFzcyAqY2xhc3MpCi0g ICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7 Ci0gICAgIElCdXNTZXJpYWxpemFibGVDbGFzcyAqc2VyaWFsaXphYmxlX2NsYXNzID0gSUJVU19T RVJJQUxJWkFCTEVfQ0xBU1MgKGNsYXNzKTsKLSAKLS0gICAgb2JqZWN0X2NsYXNzLT5kZXN0cm95 ID0gKElCdXNPYmplY3REZXN0cm95RnVuYykgaWJ1c191bmljb2RlX2RhdGFfZGVzdHJveTsKLSsg ICAgb2JqZWN0X2NsYXNzLT5kZXN0cm95ID0gKElCdXNPYmplY3REZXN0cm95RnVuYykgaWJ1c191 bmljb2RlX2Jsb2NrX2Rlc3Ryb3k7Ci0gICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9 Ci0gICAgICAgICAgICAgKEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNfdW5pY29kZV9ibG9j a19zZXRfcHJvcGVydHk7Ci0gICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9Ci1kaWZm IC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5k ZXggNTU1ZWE2OGYuLjBiZjM0ZGE4IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEK LSsrKyBiL3VpL2d0azMvZW1vamllci52YWxhCi1AQCAtMTM3Myw4ICsxMzczLDYgQEAgcHVibGlj IGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAg ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLS0g ICAgICAgICAgICAvLyBUT0RPOiBQcm92aWRlIGEgY3VzdG9tIGRlc2NyaXB0aW9uIGFuZCBhbm5v dGF0aW9uIGZvcgotLSAgICAgICAgICAgIC8vIHRoZSBmYXZvcml0ZSBlbW9qaXMuCi0gICAgICAg ICAgICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9IG5ldyBFUGFkZGVkTGFiZWxCb3goCi0gICAg ICAgICAgICAgICAgICAgICAgICAgXygiRGVzY3JpcHRpb246ICVzIikucHJpbnRmKF8oIk5vbmUi KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFsaWduLlNUQVJUKTsKLUBAIC0xNzkw LDggKzE3ODgsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgewotICAgICAgICAgICogcHJldmVudGlvbiBsb2dpYzoKLSAgICAgICAgICAqIGh0dHBz Oi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMvZ3RrLWRldmVsLWxpc3QvMjAxNy1NYXkvbXNnMDAw MjYuaHRtbAotICAgICAgICAgICovCi0tICAgICAgICAvL3VpbnQzMiB0aW1lc3RhbXAgPSBldmVu dC5nZXRfdGltZSgpOwotLSAgICAgICAgLy9wcmVzZW50X3dpdGhfdGltZSh0aW1lc3RhbXApOwot ICAgICAgICAgcHJlc2VudF9jZW50cmFsaXplKGV2ZW50KTsKLSAKLSAgICAgICAgIEdkay5EZXZp Y2UgcG9pbnRlcjsKLS0tIAotMi4xNC4zCi0KLUZyb20gZmIwN2Y2NDc2NGYxOGY3MDIyMjFmZjU1 NzRiMmZkMjE5M2YwNTFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJh dCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjAgRmViIDIwMTggMTc6 MjU6MDcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gSW1wbGVtZW50IGlidXMtZXh0ZW5zaW9uLWd0 azMgZm9yIHRoZSBnbG9iYWwga2V5YmluZGluZwotCi1DdXJyZW50bHkgSUJ1cyBwYW5lbCAoaWJ1 cy11aS1ndGszKSBpcyBub3QgYXZhaWxhYmxlIGluIEdOT01FIGFuZCBQbGFzbWEKLXNvIHRoZSBl bW9qaSBhbmQgdW5pY29kZSBwb2ludCB0eXBpbmdzIGFyZSBub3QgYXZhaWxhYmxlIGluIEdOT01F IGFuZCBQbGFzbWEuCi1UaGUgd29ya2Fyb3VuZCBgaWJ1cyBlbW9qaWAgY29tbWFuZCBpcyBhdmFp bGFibGUgYnV0IGl0IHB1dCB0aGUgc2VsZWN0ZWQKLWNoYXJhY3RlciBpbnRvIHRoZSBjb3B5IGJ1 ZmZlciBhbmQgdXNlcnMgaGF2ZSB0byBwYXN0ZSB0aGUgY2hhcmFjdGVyLgotCi1PcmlnaW5hbHkg dGhlIGVtb2ppIGZlYXR1cmUgd2FzIGltcGxlbWVudGVkIGluIElCdXMgR3RrSU1Nb2R1bGUgYnV0 Ci1pdCBoYWQgc2V2ZXJhbCBwcm9ibGVtczsgdGhlIGZpcnN0IGlzIHRoZSBrZXliaW5kaW5nIGlz IGhhcmQtY29kZWQKLWFuZCBJQnVzIEd0a0lNTW9kdWxlIGRvZXMgbm90IHVzZSBHU2V0dGluZ3Mg Zm9yIHRoZSBjdXN0b21pemVkIHNldHRpbmdzLgotVGhlIHNlY29uZCBpcyB0aGUgZmVhdHVyZSB3 YXMgYXZhaWxhYmxlIGZvciBHVEsgYXBwbGljYXRpb25zLgotVGhlIHRoaXJkIGlzIHRoYXQgWEtC IGlucHV0IHNvdXJjZXMgdXNlcyBndGstaW0tY29udGV4dC1zaW1wbGUKLWJ1dCBub3QgaWJ1cyBp biBHTk9NRSBkZXNrdG9wIHNvIHVzZXJzIGhhdmUgdG8gYWRkIGFuIElNIGlucHV0IHNvdXJjZXMK LXRvIGVuYWJsZSBJQnVzIGZvciB0aGUgWEtCIGlucHV0IHNvdXJjZXMuIFRoZSBmb3VydGggaXMg dGhlIGZlYXR1cmUKLXdhcyBhdmFpbGFibGUgZm9yIElCdXNFbmdpbmVTaW1wbGUgb25seSBhbmQg b3RoZXIgSUJ1cyBJTUVzIG5lZWQgdG8KLWluaGVyaXQgdGhhdCBjbGFzcyB0byBnZXQgdGhlIGVt b2ppIGZlYXR1cmUuIFRoZSBmaWZ0aCBpcyB0aGF0Ci1lbW9qaSB0eXBpbmcgaXMgYXZhaWxhYmxl IGZvciBFbmdsaXNoIG9ubHkgc2luY2UgSUJ1c0VuZ2luZVNpbXBsZQotaGFkIHRoZSBmZWF0dXJl LiBUaGUgc2l4dGggaXMgdGhhdCB0aGUgZGVmYXVsdCBvbmUgZGltZW5zaW9uIGxvb2t1cAotd2lu ZG93IHdhcyBub3QgdXNlZnVsIHRvIGNob29zZSBhbiBlbW9qaSBhbmQgbmVlZGVkIHR3byBkaW1l bnNpb25zCi1sb29rdXAgd2luZG93LgotCi1BbmQgdGhlIGltcGxlbWVudGF0aW9uIHdhcyBtb3Zl ZCBmcm9tIElCdXMgR3RrSU1Nb2R1bGUgdG8gSUJ1cyBwYW5lbAotdG8gZml4IGFib3ZlIHByb2Js ZW1zLgotQnV0IHVzZXJzIGhhdmUgdG8gdXNlIGBpYnVzIGVtb2ppYCBhdCBwcmVzZW50IGlmIGli dXMtdWktZ3RrMwotaXMgbm90IGF2YWlsYWJsZS4KLQotTm93IEkgdGhpbmsgdG8gbW92ZSB0aGUg ZW1vamkgZmVhdHVyZSBmcm9tIGlidXMtdWktZ3RrMyB0byBhbm90aGVyCi1JQnVzIGNvbXBvbmVu dDsgaWJ1cy1leHRlbnNpb24tZ3RrMyB3aGljaCBtYW5hZ2VzIHRoZSBDdHJsLVNoaWZ0LWUuCi1H Tk9NRSBhbmQgUGxhc21hIGRlc2t0b3BzIHN0aWxsIGRvIG5vdCBzaG93IHRoZSBHVUkgbWVudSBi dXQKLXRoZSBzaG9ydGN1dCBrZXkgaXMgYXZhaWxhYmxlIGluIHRoaXMgaW1wbGVtZW50YXRpb24u Ci0KLUJVRz1SSEJaIzE0MzA1MDEKLVI9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KLQotUmV2aWV3 IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMzOTMwMDA0MwotLS0tCi0gYmlu ZGluZ3MvdmFsYS9JQnVzLTEuMC1jdXN0b20udmFsYSB8ICAgIDQgKwotIGJ1cy9NYWtlZmlsZS5h bSAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCi0gYnVzL2lidXNpbXBsLmMgICAgICAgICAg ICAgICAgICAgICB8ICAgODIgKystCi0gYnVzL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjUgKy0KLSBidXMvbWFyc2hhbGVycy5saXN0ICAgICAgICAgICAgICAgIHwgICAgMSAr Ci0gYnVzL3BhbmVscHJveHkuYyAgICAgICAgICAgICAgICAgICB8ICAgNTcgKy0KLSBidXMvcGFu ZWxwcm94eS5oICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQotIHNyYy9NYWtlZmlsZS5hbSAg ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCi0gc3JjL2lidXMuaCAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwotIHNyYy9pYnVzbWFyc2hhbGVycy5saXN0ICAgICAgICAgICAgfCAg ICAxICsKLSBzcmMvaWJ1c3BhbmVsc2VydmljZS5jICAgICAgICAgICAgIHwgICA4MSArKy0KLSBz cmMvaWJ1c3BhbmVsc2VydmljZS5oICAgICAgICAgICAgIHwgICAxNSArLQotIHNyYy9pYnVzc2Vy aWFsaXphYmxlLmMgICAgICAgICAgICAgfCAgICA3ICstCi0gc3JjL2lidXNzZXJpYWxpemFibGUu aCAgICAgICAgICAgICB8ICAgMTggKy0KLSBzcmMvaWJ1c3NoYXJlLmMgICAgICAgICAgICAgICAg ICAgIHwgICAgNCArLQotIHNyYy9pYnVzc2hhcmUuaCAgICAgICAgICAgICAgICAgICAgfCAgIDE3 ICstCi0gc3JjL2lidXN4ZXZlbnQuYyAgICAgICAgICAgICAgICAgICB8IDEwMDQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2lidXN4ZXZlbnQuaCAgICAgICAgICAg ICAgICAgICB8ICAyOTQgKysrKysrKysrKysKLSBzcmMvdGVzdHMvcnVudGVzdCAgICAgICAgICAg ICAgICAgIHwgICAgMSArCi0gdWkvZ3RrMy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAg NTkgKystCi0gdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEgICAgICAgICB8ICAyMTUgKysrKysr KysKLSB1aS9ndGszL2NhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgIHwgIDEwMiAtLS0tCi0gdWkv Z3RrMy9leHRlbnNpb24udmFsYSAgICAgICAgICAgICB8ICAxMjQgKysrKysKLSB1aS9ndGszL2d0 a2V4dGVuc2lvbi54bWwuaW4gICAgICAgIHwgICAxMiArCi0gdWkvZ3RrMy9pY29ud2lkZ2V0LnZh bGEgICAgICAgICAgICB8ICAxMDMgKysrKwotIHVpL2d0azMvcGFuZWwudmFsYSAgICAgICAgICAg ICAgICAgfCAgNDA4ICsrKy0tLS0tLS0tLS0tLQotIHVpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEg ICAgICAgICAgfCAgMzM1ICsrKysrKysrKysrKwotIDI3IGZpbGVzIGNoYW5nZWQsIDI1MDYgaW5z ZXJ0aW9ucygrKSwgNDk1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaWJ1 c3hldmVudC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pYnVzeGV2ZW50LmgKLSBjcmVhdGUg bW9kZSAxMDA2NDQgdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLSBjcmVhdGUgbW9kZSAxMDA2 NDQgdWkvZ3RrMy9leHRlbnNpb24udmFsYQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB1aS9ndGszL2d0 a2V4dGVuc2lvbi54bWwuaW4KLSBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvZ3RrMy9wYW5lbGJpbmRp bmcudmFsYQotCi1kaWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9JQnVzLTEuMC1jdXN0b20udmFs YSBiL2JpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3VzdG9tLnZhbGEKLWluZGV4IDE0NGQ3NWUyLi5j ZjFmYzNmYSAxMDA2NDQKLS0tLSBhL2JpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3VzdG9tLnZhbGEK LSsrKyBiL2JpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3VzdG9tLnZhbGEKLUBAIC02LDQgKzYsOCBA QCBuYW1lc3BhY2UgSUJ1cyB7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfdGV4dF9uZXdfZnJv bV9zdGF0aWNfc3RyaW5nIiwgaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXB1 YmxpYyBUZXh0LmZyb21fc3RhdGljX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0gCX0KLSsJcHVibGlj IGNsYXNzIFhFdmVudCA6IElCdXMuU2VyaWFsaXphYmxlIHsKLSsJCVtDQ29kZSAoY25hbWUgPSAi aWJ1c194X2V2ZW50X25ldyIsIGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSB0cnVlKV0KLSsJCXB1 YmxpYyBYRXZlbnQgKHN0cmluZyBmaXJzdF9wcm9wZXJ0eV9uYW1lLCAuLi4pOwotKwl9Ci0gfQot ZGlmZiAtLWdpdCBhL2J1cy9NYWtlZmlsZS5hbSBiL2J1cy9NYWtlZmlsZS5hbQotaW5kZXggODY0 YmE5MjMuLjhiY2M4ZTE2IDEwMDY0NAotLS0tIGEvYnVzL01ha2VmaWxlLmFtCi0rKysgYi9idXMv TWFrZWZpbGUuYW0KLUBAIC0zLDcgKzMsOCBAQAotICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAj Ci0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdt YWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAwNy0yMDEzIFJlZCBIYXQsIEluYy4KLSsjIENv cHlyaWdodCAoYykgMjAxMy0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTggUmVkIEhhdCwgSW5jLgotICMKLSAj IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKLSAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLUBAIC0xMDUsNiArMTA2LDEwIEBAIG1hcnNoYWxlcnMuYzogbWFyc2hhbGVy cy5oIG1hcnNoYWxlcnMubGlzdAotIAkkKEdMSUJfR0VOTUFSU0hBTCkgLS1wcmVmaXg9YnVzX21h cnNoYWwgJChzcmNkaXIpL21hcnNoYWxlcnMubGlzdCAtLWJvZHkgLS1pbnRlcm5hbCkgPiAkQC50 bXAgJiYgXAotIAltdiAkQC50bXAgJEAKLSAKLStpZiBFTkFCTEVfRU1PSklfRElDVAotK0FNX0NG TEFHUyArPSAtREVNT0pJX0RJQ1QKLStlbmRpZgotKwotIAotIGlmIEVOQUJMRV9URVNUUwotIFRF U1RTID0gXAotZGlmZiAtLWdpdCBhL2J1cy9pYnVzaW1wbC5jIGIvYnVzL2lidXNpbXBsLmMKLWlu ZGV4IGY5OTMwN2FkLi41OGQyMDVjZiAxMDA2NDQKLS0tLSBhL2J1cy9pYnVzaW1wbC5jCi0rKysg Yi9idXMvaWJ1c2ltcGwuYwotQEAgLTIsNyArMiw4IEBACi0gLyogdmltOnNldCBldCBzdHM9NDog Ki8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEz IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykg MjAwOC0yMDEzIFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTczLDYg Kzc0LDcgQEAgc3RydWN0IF9CdXNJQnVzSW1wbCB7Ci0gCi0gICAgIEJ1c0lucHV0Q29udGV4dCAq Zm9jdXNlZF9jb250ZXh0OwotICAgICBCdXNQYW5lbFByb3h5ICAgKnBhbmVsOwotKyAgICBCdXNQ YW5lbFByb3h5ICAgKmV4dGVuc2lvbjsKLSAKLSAgICAgLyogYSBkZWZhdWx0IGtleW1hcCBvZiBp YnVzLWRhZW1vbiAodXN1YWxseSAidXMiKSB3aGljaCBpcyB1c2VkIG9ubHkKLSAgICAgICogd2hl biB1c2Vfc3lzX2xheW91dCBpcyBGQUxTRS4gKi8KLUBAIC0yOTAsMTIgKzI5MiwzNyBAQCBfcGFu ZWxfZGVzdHJveV9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCi0gICAgIGdfYXNzZXJ0IChCVVNf SVNfUEFORUxfUFJPWFkgKHBhbmVsKSk7Ci0gICAgIGdfYXNzZXJ0IChCVVNfSVNfSUJVU19JTVBM IChpYnVzKSk7Ci0gCi0tICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGlidXMtPnBhbmVsID09IHBhbmVs KTsKLS0KLS0gICAgaWJ1cy0+cGFuZWwgPSBOVUxMOwotKyAgICBpZiAoaWJ1cy0+cGFuZWwgPT0g cGFuZWwpCi0rICAgICAgICBpYnVzLT5wYW5lbCA9IE5VTEw7Ci0rICAgIGVsc2UgaWYgKGlidXMt PmV4dGVuc2lvbiA9PSBwYW5lbCkKLSsgICAgICAgIGlidXMtPmV4dGVuc2lvbiA9IE5VTEw7Ci0r ICAgIGVsc2UKLSsgICAgICAgIGdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7Ci0gICAgIGdfb2JqZWN0 X3VucmVmIChwYW5lbCk7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rX3BhbmVsX3BhbmVsX2V4dGVu c2lvbl9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgR1ZhcmlhbnQgICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBCdXNJQnVzSW1wbCAgKmlidXMpCi0rewotKyAgICBpZiAoIWlidXMtPmV4dGVuc2lvbikgewot KyAgICAgICAgZ193YXJuaW5nICgiUGFuZWwgZXh0ZW5zaW9uIGlzIG5vdCBydW5uaW5nLiIpOwot KyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19J U19JQlVTX0lNUEwgKGlidXMpKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX1BBTkVM X1BST1hZIChpYnVzLT5leHRlbnNpb24pKTsKLSsKLSsgICAgLyogVXNlIHRoZSBEQnVzIG1ldGhv ZCBiZWNhdXNlIGl0IHNlZW1zIGFueSBEQnVzIHNpZ25hbCwKLSsgICAgICogZ19kYnVzX21lc3Nh Z2VfbmV3X3NpZ25hbCgpLCBjYW5ub3QgYmUgcmVhY2hlZCB0byB0aGUgc2VydmVyLiAqLwotKyAg ICBnX2RidXNfcHJveHlfY2FsbCAoR19EQlVTX1BST1hZIChpYnVzLT5leHRlbnNpb24pLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgIEdfREJV U19DQUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVM TCwgTlVMTCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gX3JlZ2lzdHJ5X2NoYW5nZWRfY2IgKElC dXNSZWdpc3RyeSAqcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgIEJ1c0lCdXNJbXBs ICAqaWJ1cykKLUBAIC0zMTcsMzMgKzM0NCw0NyBAQCBfZGJ1c19uYW1lX293bmVyX2NoYW5nZWRf Y2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBnY2hhciAgICpuZXdfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1 c0lCdXNJbXBsICAgKmlidXMpCi0gewotKyAgICBQYW5lbFR5cGUgcGFuZWxfdHlwZSA9IFBBTkVM X1RZUEVfTk9ORTsKLSsKLSAgICAgZ19hc3NlcnQgKEJVU19JU19EQlVTX0lNUEwgKGRidXMpKTsK LSAgICAgZ19hc3NlcnQgKG5hbWUgIT0gTlVMTCk7Ci0gICAgIGdfYXNzZXJ0IChvbGRfbmFtZSAh PSBOVUxMKTsKLSAgICAgZ19hc3NlcnQgKG5ld19uYW1lICE9IE5VTEwpOwotICAgICBnX2Fzc2Vy dCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOwotIAotLSAgICBpZiAoZ19zdHJjbXAwIChuYW1l LCBJQlVTX1NFUlZJQ0VfUEFORUwpID09IDApIHsKLSsgICAgaWYgKCFnX3N0cmNtcDAgKG5hbWUs IElCVVNfU0VSVklDRV9QQU5FTCkpCi0rICAgICAgICBwYW5lbF90eXBlID0gUEFORUxfVFlQRV9Q QU5FTDsKLSsgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAobmFtZSwgSUJVU19TRVJWSUNFX1BBTkVM X0VYVEVOU0lPTikpCi0rICAgICAgICBwYW5lbF90eXBlID0gUEFORUxfVFlQRV9FWFRFTlNJT047 Ci0rCi0rICAgIGlmIChwYW5lbF90eXBlICE9IFBBTkVMX1RZUEVfTk9ORSkgewotICAgICAgICAg aWYgKGdfc3RyY21wMCAobmV3X25hbWUsICIiKSAhPSAwKSB7Ci0gICAgICAgICAgICAgLyogYSBQ YW5lbCBwcm9jZXNzIGlzIHN0YXJ0ZWQuICovCi0gICAgICAgICAgICAgQnVzQ29ubmVjdGlvbiAq Y29ubmVjdGlvbjsKLSAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQgPSBOVUxM OwotLQotLSAgICAgICAgICAgIGlmIChpYnVzLT5wYW5lbCAhPSBOVUxMKSB7Ci0tICAgICAgICAg ICAgICAgIGlidXNfcHJveHlfZGVzdHJveSAoKElCdXNQcm94eSAqKSBpYnVzLT5wYW5lbCk7Ci0t ICAgICAgICAgICAgICAgIC8qIHBhbmVsIHNob3VsZCBiZSBOVUxMIGFmdGVyIGRlc3Ryb3kuIFNl ZSBfcGFuZWxfZGVzdHJveV9jYiBmb3IgZGV0YWlscy4gKi8KLS0gICAgICAgICAgICAgICAgZ19h c3NlcnQgKGlidXMtPnBhbmVsID09IE5VTEwpOwotKyAgICAgICAgICAgIEJ1c1BhbmVsUHJveHkg ICAqKnBhbmVsID0gKHBhbmVsX3R5cGUgPT0gUEFORUxfVFlQRV9QQU5FTCkgPwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpYnVzLT5wYW5lbCA6ICZpYnVzLT5leHRl bnNpb247Ci0rCi0rICAgICAgICAgICAgaWYgKCpwYW5lbCAhPSBOVUxMKSB7Ci0rICAgICAgICAg ICAgICAgIGlidXNfcHJveHlfZGVzdHJveSAoKElCdXNQcm94eSAqKSgqcGFuZWwpKTsKLSsgICAg ICAgICAgICAgICAgLyogcGFuZWwgc2hvdWxkIGJlIE5VTEwgYWZ0ZXIgZGVzdHJveS4gU2VlIF9w YW5lbF9kZXN0cm95X2NiCi0rICAgICAgICAgICAgICAgICAqIGZvciBkZXRhaWxzLiAqLwotKyAg ICAgICAgICAgICAgICBnX2Fzc2VydCAoKnBhbmVsID09IE5VTEwpOwotICAgICAgICAgICAgIH0K LSAKLSAgICAgICAgICAgICBjb25uZWN0aW9uID0gYnVzX2RidXNfaW1wbF9nZXRfY29ubmVjdGlv bl9ieV9uYW1lIChCVVNfREVGQVVMVF9EQlVTLCBuZXdfbmFtZSk7Ci0gICAgICAgICAgICAgZ19y ZXR1cm5faWZfZmFpbCAoY29ubmVjdGlvbiAhPSBOVUxMKTsKLSAKLS0gICAgICAgICAgICBpYnVz LT5wYW5lbCA9IGJ1c19wYW5lbF9wcm94eV9uZXcgKGNvbm5lY3Rpb24pOwotKyAgICAgICAgICAg ICpwYW5lbCA9IGJ1c19wYW5lbF9wcm94eV9uZXcgKGNvbm5lY3Rpb24sIHBhbmVsX3R5cGUpOwot IAotLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGlidXMtPnBhbmVsLAotKyAgICAgICAg ICAgIGdfc2lnbmFsX2Nvbm5lY3QgKCpwYW5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiZGVzdHJveSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFD SyAoX3BhbmVsX2Rlc3Ryb3lfY2IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGli dXMpOwotKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKCpwYW5lbCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicGFuZWwtZXh0ZW5zaW9uIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxfcGFuZWxfZXh0ZW5zaW9uX2NiKSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLSAKLSAgICAgICAgICAgICBpZiAo aWJ1cy0+Zm9jdXNlZF9jb250ZXh0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgY29udGV4 dCA9IGlidXMtPmZvY3VzZWRfY29udGV4dDsKLUBAIC0zNTUsMTQgKzM5NiwxMyBAQCBfZGJ1c19u YW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCi0gICAgICAgICAgICAg aWYgKGNvbnRleHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICBCdXNFbmdpbmVQcm94eSAq ZW5naW5lOwotIAotLSAgICAgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfZm9jdXNfaW4gKGli dXMtPnBhbmVsLCBjb250ZXh0KTsKLSsgICAgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2Zv Y3VzX2luICgqcGFuZWwsIGNvbnRleHQpOwotIAotICAgICAgICAgICAgICAgICBlbmdpbmUgPSBi dXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lIChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAg aWYgKGVuZ2luZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICBJQnVzUHJvcExpc3Qg KnByb3BfbGlzdCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9n ZXRfcHJvcGVydGllcyAoZW5naW5lKTsKLS0gICAgICAgICAgICAgICAgICAgIGJ1c19wYW5lbF9w cm94eV9yZWdpc3Rlcl9wcm9wZXJ0aWVzIChpYnVzLT5wYW5lbCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wX2xpc3QpOwotKyAg ICAgICAgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3JlZ2lzdGVyX3Byb3BlcnRpZXMgKCpw YW5lbCwgcHJvcF9saXN0KTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAg ICAgICAgIH0KLUBAIC00MDMsNiArNDQzLDcgQEAgYnVzX2lidXNfaW1wbF9pbml0IChCdXNJQnVz SW1wbCAqaWJ1cykKLSAgICAgaWJ1cy0+Y29udGV4dHMgPSBOVUxMOwotICAgICBpYnVzLT5mb2N1 c2VkX2NvbnRleHQgPSBOVUxMOwotICAgICBpYnVzLT5wYW5lbCA9IE5VTEw7Ci0rICAgIGlidXMt PmV4dGVuc2lvbiA9IE5VTEw7Ci0gCi0gICAgIGlidXMtPmtleW1hcCA9IGlidXNfa2V5bWFwX2dl dCAoInVzIik7Ci0gCi1AQCAtNjM1LDYgKzY3Niw4IEBAIGJ1c19pYnVzX2ltcGxfc2V0X2ZvY3Vz ZWRfY29udGV4dCAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAotIAotICAgICAgICAgaWYgKGlidXMt PnBhbmVsICE9IE5VTEwpCi0gICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX291dCAo aWJ1cy0+cGFuZWwsIGlidXMtPmZvY3VzZWRfY29udGV4dCk7Ci0rICAgICAgICBpZiAoaWJ1cy0+ ZXh0ZW5zaW9uICE9IE5VTEwpCi0rICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX291 dCAoaWJ1cy0+ZXh0ZW5zaW9uLCBpYnVzLT5mb2N1c2VkX2NvbnRleHQpOwotIAotICAgICAgICAg YnVzX2lucHV0X2NvbnRleHRfZ2V0X2NvbnRlbnRfdHlwZSAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB1cnBvc2Us ICZoaW50cyk7Ci1AQCAtNjU4LDYgKzcwMSw4IEBAIGJ1c19pYnVzX2ltcGxfc2V0X2ZvY3VzZWRf Y29udGV4dCAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAotIAotICAgICAgICAgaWYgKGlidXMtPnBh bmVsICE9IE5VTEwpCi0gICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX2luIChpYnVz LT5wYW5lbCwgY29udGV4dCk7Ci0rICAgICAgICBpZiAoaWJ1cy0+ZXh0ZW5zaW9uICE9IE5VTEwp Ci0rICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX2luIChpYnVzLT5leHRlbnNpb24s IGNvbnRleHQpOwotICAgICB9Ci0gCi0gICAgIGlmIChlbmdpbmUgIT0gTlVMTCkKLUBAIC04NDYs OCArODkxLDEzIEBAIF9jb250ZXh0X2Rlc3Ryb3lfY2IgKEJ1c0lucHV0Q29udGV4dCAgICAqY29u dGV4dCwKLSAgICAgICAgIGJ1c19pYnVzX2ltcGxfc2V0X2ZvY3VzZWRfY29udGV4dCAoaWJ1cywg TlVMTCk7Ci0gCi0gICAgIGlmIChpYnVzLT5wYW5lbCAmJgotLSAgICAgICAgYnVzX2lucHV0X2Nv bnRleHRfZ2V0X2NhcGFiaWxpdGllcyAoY29udGV4dCkgJiBJQlVTX0NBUF9GT0NVUykKLSsgICAg ICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9jYXBhYmlsaXRpZXMgKGNvbnRleHQpICYgSUJVU19D QVBfRk9DVVMpIHsKLSAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9kZXN0cm95X2NvbnRleHQgKGli dXMtPnBhbmVsLCBjb250ZXh0KTsKLSsgICAgfQotKyAgICBpZiAoaWJ1cy0+ZXh0ZW5zaW9uICYm Ci0rICAgICAgICBidXNfaW5wdXRfY29udGV4dF9nZXRfY2FwYWJpbGl0aWVzIChjb250ZXh0KSAm IElCVVNfQ0FQX0ZPQ1VTKSB7Ci0rICAgICAgICBidXNfcGFuZWxfcHJveHlfZGVzdHJveV9jb250 ZXh0IChpYnVzLT5leHRlbnNpb24sIGNvbnRleHQpOwotKyAgICB9Ci0gCi0gICAgIGlidXMtPmNv bnRleHRzID0gZ19saXN0X3JlbW92ZSAoaWJ1cy0+Y29udGV4dHMsIGNvbnRleHQpOwotICAgICBn X29iamVjdF91bnJlZiAoY29udGV4dCk7Ci1kaWZmIC0tZ2l0IGEvYnVzL21haW4uYyBiL2J1cy9t YWluLmMKLWluZGV4IDZhZDYwMTc5Li41YjI1ODliMSAxMDA2NDQKLS0tLSBhL2J1cy9tYWluLmMK LSsrKyBiL2J1cy9tYWluLmMKLUBAIC0yLDcgKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6 ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx MyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAxMyBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChD KSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC00Miw2 ICs0Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiB4aW0gPSBGQUxTRTsKLSBzdGF0aWMgZ2Jvb2xlYW4g cmVwbGFjZSA9IEZBTFNFOwotIHN0YXRpYyBnYm9vbGVhbiByZXN0YXJ0ID0gRkFMU0U7Ci0gc3Rh dGljIGdjaGFyICpwYW5lbCA9ICJkZWZhdWx0IjsKLStzdGF0aWMgZ2NoYXIgKnBhbmVsX2V4dGVu c2lvbiA9ICJkZWZhdWx0IjsKLSBzdGF0aWMgZ2NoYXIgKmNvbmZpZyA9ICJkZWZhdWx0IjsKLSBz dGF0aWMgZ2NoYXIgKmRlc2t0b3AgPSAiZ25vbWUiOwotIAotQEAgLTYwLDYgKzYyLDcgQEAgc3Rh dGljIGNvbnN0IEdPcHRpb25FbnRyeSBlbnRyaWVzW10gPQotICAgICB7ICJ4aW0iLCAgICAgICAn eCcsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAgICZ4aW0sICAgICAgICJleGVjdXRlIGlidXMgWElN IHNlcnZlci4iLCBOVUxMIH0sCi0gICAgIHsgImRlc2t0b3AiLCAgICduJywgMCwgR19PUFRJT05f QVJHX1NUUklORywgJmRlc2t0b3AsICAgInNwZWNpZnkgdGhlIG5hbWUgb2YgZGVza3RvcCBzZXNz aW9uLiBbZGVmYXVsdD1nbm9tZV0iLCAibmFtZSIgfSwKLSAgICAgeyAicGFuZWwiLCAgICAgJ3An LCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmcGFuZWwsICAgICAic3BlY2lmeSB0aGUgY21kbGlu ZSBvZiBwYW5lbCBwcm9ncmFtLiBwYXNzICdkaXNhYmxlJyBub3QgdG8gc3RhcnQgYSBwYW5lbCBw cm9ncmFtLiIsICJjbWRsaW5lIiB9LAotKyAgICB7ICJwYW5lbC1leHRlbnNpb24iLCAnRScsIDAs IEdfT1BUSU9OX0FSR19TVFJJTkcsICZwYW5lbF9leHRlbnNpb24sICJzcGVjaWZ5IHRoZSBjbWRs aW5lIG9mIHBhbmVsIGV4dGVuc2lvbiBwcm9ncmFtLiBwYXNzICdkaXNhYmxlJyBub3QgdG8gc3Rh cnQgYW4gZXh0ZW5zaW9uIHByb2dyYW0uIiwgImNtZGxpbmUiIH0sCi0gICAgIHsgImNvbmZpZyIs ICAgICdjJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmNvbmZpZywgICAgInNwZWNpZnkgdGhl IGNtZGxpbmUgb2YgY29uZmlnIHByb2dyYW0uIHBhc3MgJ2Rpc2FibGUnIG5vdCB0byBzdGFydCBh IGNvbmZpZyBwcm9ncmFtLiIsICJjbWRsaW5lIiB9LAotICAgICB7ICJhZGRyZXNzIiwgICAnYScs IDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZnX2FkZHJlc3MsICAgInNwZWNpZnkgdGhlIGFkZHJl c3Mgb2YgaWJ1cyBkYWVtb24uIiwgImFkZHJlc3MiIH0sCi0gICAgIHsgInJlcGxhY2UiLCAgICdy JywgMCwgR19PUFRJT05fQVJHX05PTkUsICAgJnJlcGxhY2UsICAgImlmIHRoZXJlIGlzIGFuIG9s ZCBpYnVzLWRhZW1vbiBpcyBydW5uaW5nLCBpdCB3aWxsIGJlIHJlcGxhY2VkLiIsIE5VTEwgfSwK LUBAIC0yNjgsNyArMjcxLDI3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotICAg ICAgICAgICAgIGlmICghZXhlY3V0ZV9jbWRsaW5lIChwYW5lbCkpCi0gICAgICAgICAgICAgICAg IGV4aXQgKC0xKTsKLSAgICAgICAgIH0KLSsKLSsjaWZkZWYgRU1PSklfRElDVAotKyAgICAgICAg aWYgKGdfc3RyY21wMCAocGFuZWxfZXh0ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKLSsgICAg ICAgICAgICBCdXNDb21wb25lbnQgKmNvbXBvbmVudDsKLSsgICAgICAgICAgICBjb21wb25lbnQg PSBidXNfaWJ1c19pbXBsX2xvb2t1cF9jb21wb25lbnRfYnlfbmFtZSAoCi0rICAgICAgICAgICAg ICAgICAgICBCVVNfREVGQVVMVF9JQlVTLCBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OKTsK LSsgICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7Ci0rICAgICAgICAgICAgICAgIGJ1c19jb21w b25lbnRfc2V0X3Jlc3RhcnQgKGNvbXBvbmVudCwgcmVzdGFydCk7Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgICAgIGlmIChjb21wb25lbnQgPT0gTlVMTCB8fAotKyAgICAgICAgICAgICAgICAh YnVzX2NvbXBvbmVudF9zdGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7Ci0rICAgICAgICAg ICAgICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBwYW5lbCBwcm9ncmFt XG4iKTsKLSsgICAgICAgICAgICAgICAgZXhpdCAoLTEpOwotKyAgICAgICAgICAgIH0KLSsgICAg ICAgIH0gZWxzZSBpZiAoZ19zdHJjbXAwIChwYW5lbF9leHRlbnNpb24sICJkaXNhYmxlIikgIT0g MCAmJgotKyAgICAgICAgICAgICAgICAgICBnX3N0cmNtcDAgKHBhbmVsX2V4dGVuc2lvbiwgIiIp ICE9IDApIHsKLSsgICAgICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFuZWxfZXh0ZW5z aW9uKSkKLSsgICAgICAgICAgICAgICAgZXhpdCAoLTEpOwotKyAgICAgICAgfQotICAgICB9Ci0r I2VuZGlmCi0gCi0gICAgIC8qIGV4ZWN1dGUgaWJ1cyB4aW0gc2VydmVyICovCi0gICAgIGlmICh4 aW0pIHsKLWRpZmYgLS1naXQgYS9idXMvbWFyc2hhbGVycy5saXN0IGIvYnVzL21hcnNoYWxlcnMu bGlzdAotaW5kZXggYzAzMmNkYWEuLjQzN2M2ZmVlIDEwMDY0NAotLS0tIGEvYnVzL21hcnNoYWxl cnMubGlzdAotKysrIGIvYnVzL21hcnNoYWxlcnMubGlzdAotQEAgLTEyLDQgKzEyLDUgQEAgVk9J RDpTVFJJTkcKLSBWT0lEOlNUUklORyxJTlQKLSBWT0lEOlVJTlQsVUlOVAotIFZPSUQ6VUlOVCxV SU5ULFVJTlQKLStWT0lEOlZBUklBTlQKLSBWT0lEOlZPSUQKLWRpZmYgLS1naXQgYS9idXMvcGFu ZWxwcm94eS5jIGIvYnVzL3BhbmVscHJveHkuYwotaW5kZXggODM4MWQ3ZGMuLmMzOTA4ZmNmIDEw MDY0NAotLS0tIGEvYnVzL3BhbmVscHJveHkuYwotKysrIGIvYnVzL3BhbmVscHJveHkuYwotQEAg LTIsOCArMiw4IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElu cHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE0IFBlbmcgSHVhbmcgPHNoYXduLnAu aHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNyBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCBS ZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTgg UmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC01MSw2ICs1MSw3IEBAIGVu dW0gewotICAgICBQUk9QRVJUWV9TSE9XLAotICAgICBQUk9QRVJUWV9ISURFLAotICAgICBDT01N SVRfVEVYVCwKLSsgICAgUEFORUxfRVhURU5TSU9OLAotICAgICBMQVNUX1NJR05BTCwKLSB9Owot IAotQEAgLTU5LDYgKzYwLDcgQEAgc3RydWN0IF9CdXNQYW5lbFByb3h5IHsKLSAKLSAgICAgLyog aW5zdGFuY2UgbWVtYmVycyAqLwotICAgICBCdXNJbnB1dENvbnRleHQgKmZvY3VzZWRfY29udGV4 dDsKLSsgICAgUGFuZWxUeXBlIHBhbmVsX3R5cGU7Ci0gfTsKLSAKLSBzdHJ1Y3QgX0J1c1BhbmVs UHJveHlDbGFzcyB7Ci1AQCAtMTEwLDIyICsxMTIsMzkgQEAgc3RhdGljIHZvaWQgICAgIGJ1c19w YW5lbF9wcm94eV9jb21taXRfdGV4dAotIEdfREVGSU5FX1RZUEUoQnVzUGFuZWxQcm94eSwgYnVz X3BhbmVsX3Byb3h5LCBJQlVTX1RZUEVfUFJPWFkpCi0gCi0gQnVzUGFuZWxQcm94eSAqCi0tYnVz X3BhbmVsX3Byb3h5X25ldyAoQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKLStidXNfcGFuZWxf cHJveHlfbmV3IChCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAg ICAgIFBhbmVsVHlwZSAgICAgIHBhbmVsX3R5cGUpCi0gewotKyAgICBjb25zdCBnY2hhciAqcGF0 aCA9IE5VTEw7Ci0rICAgIEdPYmplY3QgKm9iajsKLSsgICAgQnVzUGFuZWxQcm94eSAqcGFuZWw7 Ci0rCi0gICAgIGdfYXNzZXJ0IChCVVNfSVNfQ09OTkVDVElPTiAoY29ubmVjdGlvbikpOwotIAot LSAgICBHT2JqZWN0ICpvYmo7Ci0rICAgIHN3aXRjaCAocGFuZWxfdHlwZSkgewotKyAgICBjYXNl IFBBTkVMX1RZUEVfUEFORUw6Ci0rICAgICAgICBwYXRoID0gSUJVU19QQVRIX1BBTkVMOwotKyAg ICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUEFORUxfVFlQRV9FWFRFTlNJT046Ci0rICAgICAgICBw YXRoID0gSUJVU19QQVRIX1BBTkVMX0VYVEVOU0lPTjsKLSsgICAgICAgIGJyZWFrOwotKyAgICBk ZWZhdWx0OgotKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKE5VTEwpOwotKyAgICB9 Ci0rCi0gICAgIG9iaiA9IGdfaW5pdGFibGVfbmV3IChCVVNfVFlQRV9QQU5FTF9QUk9YWSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImctb2JqZWN0LXBhdGgiLCAgICAg SUJVU19QQVRIX1BBTkVMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgImctb2JqZWN0LXBh dGgiLCAgICAgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLWludGVyZmFjZS1u YW1lIiwgIElCVVNfSU5URVJGQUNFX1BBTkVMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ImctY29ubmVjdGlvbiIsICAgICAgYnVzX2Nvbm5lY3Rpb25fZ2V0X2RidXNfY29ubmVjdGlvbiAo Y29ubmVjdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1kZWZhdWx0LXRpbWVv dXQiLCBnX2dkYnVzX3RpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1mbGFn cyIsICAgICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0FVVE9fU1RBUlQgfCBHX0RC VVNfUFJPWFlfRkxBR1NfRE9fTk9UX0xPQURfUFJPUEVSVElFUywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOwotIAotLSAgICByZXR1cm4gQlVTX1BBTkVMX1BST1hZIChvYmopOwot KyAgICBwYW5lbCA9IEJVU19QQU5FTF9QUk9YWSAob2JqKTsKLSsgICAgcGFuZWwtPnBhbmVsX3R5 cGUgPSBwYW5lbF90eXBlOwotKyAgICByZXR1cm4gcGFuZWw7Ci0gfQotIAotIHN0YXRpYyB2b2lk Ci1AQCAtMjMxLDYgKzI1MCwxNiBAQCBidXNfcGFuZWxfcHJveHlfY2xhc3NfaW5pdCAoQnVzUGFu ZWxQcm94eUNsYXNzICpjbGFzcykKLSAgICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19PQkpF Q1QsCi0gICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCi0gICAgICAgICAgICAgSUJVU19UWVBF X1RFWFQpOwotKwotKyAgICBwYW5lbF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQotKyAgICAg ICAgZ19zaWduYWxfbmV3IChJXygicGFuZWwtZXh0ZW5zaW9uIiksCi0rICAgICAgICAgICAgR19U WVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK LSsgICAgICAgICAgICAwLAotKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAg YnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVCwKLSsgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwK LSsgICAgICAgICAgICBHX1RZUEVfVkFSSUFOVCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAt MzM3LDYgKzM2NiwxNSBAQCBidXNfcGFuZWxfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpw cm94eSwKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgICBpZiAoZ19zdHJjbXAwICgi UGFuZWxFeHRlbnNpb24iLCBzaWduYWxfbmFtZSkgPT0gMCkgewotKyAgICAgICAgaWYgKHBhbmVs LT5wYW5lbF90eXBlICE9IFBBTkVMX1RZUEVfUEFORUwpIHsKLSsgICAgICAgICAgICBnX3dhcm5p bmcgKCJXcm9uZyBzaWduYWwiKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0r ICAgICAgICBnX3NpZ25hbF9lbWl0IChwYW5lbCwgcGFuZWxfc2lnbmFsc1tQQU5FTF9FWFRFTlNJ T05dLCAwLCBwYXJhbWV0ZXJzKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgICAv KiBzaG91bmQgbm90IGJlIHJlYWNoZWQgKi8KLSAgICAgZ19yZXR1cm5faWZfcmVhY2hlZCAoKTsK LSB9Ci1AQCAtODMyLDMgKzg3MCwxMCBAQCBidXNfcGFuZWxfcHJveHlfZGVzdHJveV9jb250ZXh0 IChCdXNQYW5lbFByb3h5ICAgICpwYW5lbCwKLSAKLSAgICAgZ19vYmplY3RfdW5yZWYgKGNvbnRl eHQpOwotIH0KLSsKLStQYW5lbFR5cGUKLStidXNfcGFuZWxfcHJveHlfZ2V0X3BhbmVsX3R5cGUg KEJ1c1BhbmVsUHJveHkgICAgKnBhbmVsKQotK3sKLSsgICAgZ19hc3NlcnQgKEJVU19JU19QQU5F TF9QUk9YWSAocGFuZWwpKTsKLSsgICAgcmV0dXJuIHBhbmVsLT5wYW5lbF90eXBlOwotK30KLWRp ZmYgLS1naXQgYS9idXMvcGFuZWxwcm94eS5oIGIvYnVzL3BhbmVscHJveHkuaAotaW5kZXggNTAw MmY4NmQuLmI1YTdhZjE3IDEwMDY0NAotLS0tIGEvYnVzL3BhbmVscHJveHkuaAotKysrIGIvYnVz L3BhbmVscHJveHkuaAotQEAgLTIsNyArMiw4IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8K LSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE0IFBl bmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAw OC0yMDE0IFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBUYWthbyBG dWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIw MDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTUwLDEyICs1 MSwyNSBAQAotIAotIEdfQkVHSU5fREVDTFMKLSAKLSt0eXBlZGVmIGVudW0KLSt7Ci0rICAgIFBB TkVMX1RZUEVfTk9ORSwKLSsgICAgUEFORUxfVFlQRV9QQU5FTCwKLSsgICAgUEFORUxfVFlQRV9F WFRFTlNJT04KLSt9IFBhbmVsVHlwZTsKLSsKLSB0eXBlZGVmIHN0cnVjdCBfQnVzUGFuZWxQcm94 eSBCdXNQYW5lbFByb3h5OwotIHR5cGVkZWYgc3RydWN0IF9CdXNQYW5lbFByb3h5Q2xhc3MgQnVz UGFuZWxQcm94eUNsYXNzOwotIAotIEdUeXBlICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2dl dF90eXBlICAgICAgKHZvaWQpOwotLUJ1c1BhbmVsUHJveHkgICAqYnVzX3BhbmVsX3Byb3h5X25l dyAgICAgICAgICAgKEJ1c0Nvbm5lY3Rpb24gICAgICpjb25uZWN0aW9uKTsKLStCdXNQYW5lbFBy b3h5ICAgKmJ1c19wYW5lbF9wcm94eV9uZXcgICAgICAgICAgIChCdXNDb25uZWN0aW9uICAgICAq Y29ubmVjdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQYW5lbFR5cGUgICAgICAgICAgcGFuZWxfdHlwZSk7Ci0gCi0rZ2Jvb2xlYW4gICAgICAg ICBidXNfcGFuZWxfcHJveHlfc2VuZF9zaWduYWwgICAoQnVzUGFuZWxQcm94eSAgICpwYW5lbCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn Y2hhciAgICAgKmludGVyZmFjZV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqc2lnbmFsX25hbWUsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAg ICpwYXJhbWV0ZXJzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdFcnJvciAgICAgICAgICoqZXJyb3IpOwotIC8qIGZ1bmN0aW9ucyB0aGF0IGludm9r ZSBELUJ1cyBtZXRob2RzIG9mIHRoZSBwYW5lbCBjb21wb25lbnQuICovCi0gdm9pZCAgICAgICAg ICAgICBidXNfcGFuZWxfcHJveHlfZm9jdXNfaW4gICAgICAoQnVzUGFuZWxQcm94eSAgICAgKnBh bmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1 c0lucHV0Q29udGV4dCAgICpjb250ZXh0KTsKLUBAIC0xMTksNiArMTMzLDggQEAgdm9pZCAgICAg ICAgICAgICBidXNfcGFuZWxfcHJveHlfc2V0X2NvbnRlbnRfdHlwZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c1BhbmVsUHJveHkgICAgICpwYW5l bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dCAgICAgICAgICAgICAgcHVycG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgaGludHMpOwotK1BhbmVsVHlwZSAg ICAgICAgYnVzX3BhbmVsX3Byb3h5X2dldF9wYW5lbF90eXBlCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzUGFuZWxQcm94eSAgICAgKnBhbmVsKTsK LSBHX0VORF9ERUNMUwotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBi L3NyYy9NYWtlZmlsZS5hbQotaW5kZXggMWJhNDE4ZDguLjcyZWMwNWFiIDEwMDY0NAotLS0tIGEv c3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0zLDcgKzMsNyBAQAot ICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNSBQ ZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykgMjAx NS0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyMgQ29w eXJpZ2h0IChjKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0gIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNyBSZWQgSGF0LCBJbmMuCi0gIwotICMg VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgotQEAgLTEwMyw2ICsxMDMsNyBAQCBpYnVzX3NvdXJjZXMgPSAgICAgICAgICAgICAgXAot ICAgICBpYnVzdGV4dC5jICAgICAgICAgICAgICBcCi0gICAgIGlidXN1bmljb2RlLmMgICAgICAg ICAgIFwKLSAgICAgaWJ1c3V0aWwuYyAgICAgICAgICAgICAgXAotKyAgICBpYnVzeGV2ZW50LmMg ICAgICAgICAgICBcCi0gICAgIGlidXN4bWwuYyAgICAgICAgICAgICAgIFwKLSAgICAgJChOVUxM KQotIGxpYmlidXNfMV8wX2xhX1NPVVJDRVMgPSAgICBcCi1AQCAtMTU1LDYgKzE1Niw3IEBAIGli dXNfaGVhZGVycyA9ICAgICAgICAgICAgICBcCi0gICAgIGlidXN0eXBlcy5oICAgICAgICAgICAg IFwKLSAgICAgaWJ1c3VuaWNvZGUuaCAgICAgICAgICAgXAotICAgICBpYnVzdXRpbC5oICAgICAg ICAgICAgICBcCi0rICAgIGlidXN4ZXZlbnQuaCAgICAgICAgICAgIFwKLSAgICAgaWJ1c3htbC5o ICAgICAgICAgICAgICAgXAotICAgICAkKE5VTEwpCi0gaWJ1c2luY2x1ZGVkaXIgPSAkKGluY2x1 ZGVkaXIpL2lidXMtQElCVVNfQVBJX1ZFUlNJT05ACi1kaWZmIC0tZ2l0IGEvc3JjL2lidXMuaCBi L3NyYy9pYnVzLmgKLWluZGV4IDgwMTE3MjlmLi5iMTVkZGVkOSAxMDA2NDQKLS0tLSBhL3NyYy9p YnVzLmgKLSsrKyBiL3NyYy9pYnVzLmgKLUBAIC01OSw2ICs1OSw3IEBACi0gI2luY2x1ZGUgPGli dXNyZWdpc3RyeS5oPgotICNpbmNsdWRlIDxpYnVzZW1vamkuaD4KLSAjaW5jbHVkZSA8aWJ1c3Vu aWNvZGUuaD4KLSsjaW5jbHVkZSA8aWJ1c3hldmVudC5oPgotIAotICNpZm5kZWYgSUJVU19ESVNB QkxFX0RFUFJFQ0FURUQKLSAjaW5jbHVkZSA8aWJ1c2tleXN5bXMtY29tcGF0Lmg+Ci1kaWZmIC0t Z2l0IGEvc3JjL2lidXNtYXJzaGFsZXJzLmxpc3QgYi9zcmMvaWJ1c21hcnNoYWxlcnMubGlzdAot aW5kZXggOTE4YmM3ZjcuLjhkOTE5MzdlIDEwMDY0NAotLS0tIGEvc3JjL2lidXNtYXJzaGFsZXJz Lmxpc3QKLSsrKyBiL3NyYy9pYnVzbWFyc2hhbGVycy5saXN0Ci1AQCAtMjQsNCArMjQsNSBAQCBW T0lEOlNUUklORyxTVFJJTkcsU1RSSU5HCi0gVk9JRDpVSU5UCi0gVk9JRDpVSU5ULFBPSU5URVIK LSBWT0lEOlBPSU5URVIsVUlOVAotK1ZPSUQ6VkFSSUFOVAotIE9CSkVDVDpTVFJJTkcKLWRpZmYg LS1naXQgYS9zcmMvaWJ1c3BhbmVsc2VydmljZS5jIGIvc3JjL2lidXNwYW5lbHNlcnZpY2UuYwot aW5kZXggMzM5NDlmYTEuLmYzN2I5MWMzIDEwMDY0NAotLS0tIGEvc3JjL2lidXNwYW5lbHNlcnZp Y2UuYwotKysrIGIvc3JjL2lidXNwYW5lbHNlcnZpY2UuYwotQEAgLTI1LDYgKzI1LDEwIEBACi0g I2luY2x1ZGUgImlidXNtYXJzaGFsZXJzLmgiCi0gI2luY2x1ZGUgImlidXNpbnRlcm5hbC5oIgot IAotKyNkZWZpbmUgSUJVU19QQU5FTF9TRVJWSUNFX0dFVF9QUklWQVRFKG8pICBcCi0rICAgKEdf VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG8pLCBJQlVTX1RZUEVfUEFORUxfU0VSVklDRSwg XAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNQYW5lbFNlcnZpY2VQcml2 YXRlKSkKLSsKLSBlbnVtIHsKLSAgICAgVVBEQVRFX1BSRUVESVRfVEVYVCwKLSAgICAgVVBEQVRF X0FVWElMSUFSWV9URVhULAotQEAgLTUyLDYgKzU2LDcgQEAgZW51bSB7Ci0gICAgIFNUQVRFX0NI QU5HRUQsCi0gICAgIERFU1RST1lfQ09OVEVYVCwKLSAgICAgU0VUX0NPTlRFTlRfVFlQRSwKLSsg ICAgUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVELAotICAgICBMQVNUX1NJR05BTCwKLSB9OwotIAot QEAgLTE0Niw2ICsxNTEsOSBAQCBzdGF0aWMgdm9pZCAgICAgIGlidXNfcGFuZWxfc2VydmljZV9z ZXRfY29udGVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1 c1BhbmVsU2VydmljZSAgICAgICAqcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgcHVycG9zZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICBoaW50cyk7Ci0r c3RhdGljIHZvaWQgICAgICBpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlY2Vp dmVkCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2Vydmlj ZSAgICAgICAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh cmlhbnQgICAgICAgICAgICAgICAqZGF0YSk7Ci0gCi0gR19ERUZJTkVfVFlQRSAoSUJ1c1BhbmVs U2VydmljZSwgaWJ1c19wYW5lbF9zZXJ2aWNlLCBJQlVTX1RZUEVfU0VSVklDRSkKLSAKLUBAIC0y MTIsNiArMjIwLDkgQEAgc3RhdGljIGNvbnN0IGdjaGFyIGludHJvc3BlY3Rpb25feG1sW10gPQot ICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyAgdHlwZT0ndScgbmFtZT0ncHVycG9zZScg Lz4iCi0gICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nICB0eXBlPSd1JyBuYW1lPSdoaW50 cycgLz4iCi0gICAgICIgICAgPC9tZXRob2Q+IgotKyAgICAiICAgIDxtZXRob2QgbmFtZT0nUGFu ZWxFeHRlbnNpb25SZWNlaXZlZCc+IgotKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0 eXBlPSd2JyBuYW1lPSdkYXRhJyAvPiIKLSsgICAgIiAgICA8L21ldGhvZD4iCi0gICAgIC8qIFNp Z25hbHMgKi8KLSAgICAgIiAgICA8c2lnbmFsIG5hbWU9J0N1cnNvclVwJyAvPiIKLSAgICAgIiAg ICA8c2lnbmFsIG5hbWU9J0N1cnNvckRvd24nIC8+IgotQEAgLTIzNSw2ICsyNDYsOSBAQCBzdGF0 aWMgY29uc3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9Ci0gICAgICIgICAgPHNpZ25hbCBu YW1lPSdDb21taXRUZXh0Jz4iCi0gICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQn IC8+IgotICAgICAiICAgIDwvc2lnbmFsPiIKLSsgICAgIiAgICA8c2lnbmFsIG5hbWU9J1BhbmVs RXh0ZW5zaW9uJz4iCi0rICAgICIgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J2RhdGEnIC8+Igot KyAgICAiICAgIDwvc2lnbmFsPiIKLSAgICAgIiAgPC9pbnRlcmZhY2U+IgotICAgICAiPC9ub2Rl PiI7Ci0gCi1AQCAtMjc0LDYgKzI4OCw4IEBAIGlidXNfcGFuZWxfc2VydmljZV9jbGFzc19pbml0 IChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MgKmNsYXNzKQotICAgICBjbGFzcy0+dXBkYXRlX3ByZWVk aXRfdGV4dCAgID0gaWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9wcmVlZGl0X3RleHQ7Ci0gICAg IGNsYXNzLT51cGRhdGVfcHJvcGVydHkgICAgICAgPSBpYnVzX3BhbmVsX3NlcnZpY2VfdXBkYXRl X3Byb3BlcnR5OwotICAgICBjbGFzcy0+c2V0X2NvbnRlbnRfdHlwZSAgICAgID0gaWJ1c19wYW5l bF9zZXJ2aWNlX3NldF9jb250ZW50X3R5cGU7Ci0rICAgIGNsYXNzLT5wYW5lbF9leHRlbnNpb25f cmVjZWl2ZWQgPQotKyAgICAgICAgICAgIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNp b25fcmVjZWl2ZWQ7Ci0gCi0gICAgIGNsYXNzLT5jdXJzb3JfZG93bl9sb29rdXBfdGFibGUgPSBp YnVzX3BhbmVsX3NlcnZpY2Vfbm90X2ltcGxlbWVudGVkOwotICAgICBjbGFzcy0+Y3Vyc29yX3Vw X2xvb2t1cF90YWJsZSAgID0gaWJ1c19wYW5lbF9zZXJ2aWNlX25vdF9pbXBsZW1lbnRlZDsKLUBA IC04OTEsNiArOTA3LDMwIEBAIGlidXNfcGFuZWxfc2VydmljZV9jbGFzc19pbml0IChJQnVzUGFu ZWxTZXJ2aWNlQ2xhc3MgKmNsYXNzKQotICAgICAgICAgICAgIDIsCi0gICAgICAgICAgICAgR19U WVBFX1VJTlQsCi0gICAgICAgICAgICAgR19UWVBFX1VJTlQpOwotKwotKyAgICAvKioKLSsgICAg ICogSUJ1c1BhbmVsU2VydmljZTo6cGFuZWwtZXh0ZW5zaW9uLXJlY2VpdmVkOgotKyAgICAgKiBA cGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2aWNlCi0rICAgICAqIEBkYXRhOiBBICNHVmFyaWFudAot KyAgICAgKgotKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBnZXQg dGhlIDo6cGFuZWwtZXh0ZW5zaW9uLXJlY2VpdmVkLgotKyAgICAgKiBJbXBsZW1lbnQgdGhlIG1l bWJlciBmdW5jdGlvbgotKyAgICAgKiBJQnVzUGFuZWxTZXJ2aWNlQ2xhc3M6OnBhbmVsX2V4dGVu c2lvbl9yZWNlaXZlZCBpbiBleHRlbmRlZCBjbGFzcyB0bwotKyAgICAgKiByZWNlaXZlIHRoaXMg c2lnbmFsLgotKyAgICAgKgotKyAgICAgKiA8bm90ZT48cGFyYT5Bcmd1bWVudCBAdXNlcl9kYXRh IGlzIGlnbm9yZWQgaW4gdGhpcyBmdW5jdGlvbi48L3BhcmE+Ci0rICAgICAqIDwvbm90ZT4KLSsg ICAgICovCi0rICAgIHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVEXSA9Ci0r ICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJwYW5lbC1leHRlbnNpb24tcmVjZWl2ZWQiKSwKLSsg ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoZ29iamVjdF9jbGFzcyksCi0rICAgICAgICAg ICAgR19TSUdOQUxfUlVOX0xBU1QsCi0rICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChJQnVz UGFuZWxTZXJ2aWNlQ2xhc3MsIHBhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCksCi0rICAgICAgICAg ICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAgICBfaWJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQs Ci0rICAgICAgICAgICAgR19UWVBFX05PTkUsCi0rICAgICAgICAgICAgMSwKLSsgICAgICAgICAg ICBHX1RZUEVfVkFSSUFOVCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTA4OCw2ICsxMTI4 LDI0IEBAIGlidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2Vydmlj ZSAgICAgICAgICAgKnNlcnZpY2UsCi0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgICAg aWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJQYW5lbEV4dGVuc2lvblJlY2VpdmVkIikgPT0g MCkgewotKyAgICAgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBOVUxMOwotKyAgICAgICAgZ192YXJp YW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZ2YXJpYW50KTsKLSsgICAgICAgIGlmICh2YXJp YW50ID09IE5VTEwpIHsKLSsgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0 dXJuX2Vycm9yICgKLSsgICAgICAgICAgICAgICAgICAgIGludm9jYXRpb24sCi0rICAgICAgICAg ICAgICAgICAgICBHX0RCVVNfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICBHX0RCVVNfRVJS T1JfRkFJTEVELAotKyAgICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQg bWV0aG9kIGdpdmVzIE5VTEwiKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0r ICAgICAgICBnX3NpZ25hbF9lbWl0IChwYW5lbCwgcGFuZWxfc2lnbmFsc1tQQU5FTF9FWFRFTlNJ T05fUkVDRUlWRURdLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCk7Ci0rICAg ICAgICBnX3ZhcmlhbnRfdW5yZWYgKHZhcmlhbnQpOwotKyAgICAgICAgZ19kYnVzX21ldGhvZF9p bnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwgTlVMTCk7Ci0rICAgICAgICByZXR1 cm47Ci0rICAgIH0KLSsKLSAgICAgY29uc3Qgc3RhdGljIHN0cnVjdCB7Ci0gICAgICAgICBjb25z dCBnY2hhciAqbmFtZTsKLSAgICAgICAgIGNvbnN0IGdpbnQgc2lnbmFsX2lkOwotQEAgLTEyNTks NiArMTMxNywxMyBAQCBpYnVzX3BhbmVsX3NlcnZpY2Vfc2V0X2NvbnRlbnRfdHlwZSAoSUJ1c1Bh bmVsU2VydmljZSAqcGFuZWwsCi0gICAgIGlidXNfcGFuZWxfc2VydmljZV9ub3RfaW1wbGVtZW50 ZWQocGFuZWwpOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2lidXNfcGFuZWxfc2VydmljZV9wYW5l bF9leHRlbnNpb25fcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgKmRh dGEpCi0rewotKyAgICBpYnVzX3BhbmVsX3NlcnZpY2Vfbm90X2ltcGxlbWVudGVkKHBhbmVsKTsK LSt9Ci0rCi0gSUJ1c1BhbmVsU2VydmljZSAqCi0gaWJ1c19wYW5lbF9zZXJ2aWNlX25ldyAoR0RC dXNDb25uZWN0aW9uICpjb25uZWN0aW9uKQotIHsKLUBAIC0xMzQ3LDYgKzE0MTIsMjEgQEAgaWJ1 c19wYW5lbF9zZXJ2aWNlX2NvbW1pdF90ZXh0IChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKLSAg ICAgfQotIH0KLSAKLSt2b2lkCi0raWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbiAo SUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1ZhcmlhbnQgICAgICAgICAqdmFyaWFudCkKLSt7Ci0rICAgIGdfcmV0dXJuX2lmX2Zh aWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKLSsgICAgZ19yZXR1cm5faWZfZmFp bCAodmFyaWFudCk7Ci0rCi0rICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2 aWNlICopIHBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rfQotKwotICNkZWZpbmUgREVGSU5FX0ZV TkMobmFtZSwgTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdm9pZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg IGlidXNfcGFuZWxfc2VydmljZV8jI25hbWUgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsKSAgICAg XAotQEAgLTEzNjQsNCArMTQ0NCwzIEBAIERFRklORV9GVU5DIChjdXJzb3JfdXAsIEN1cnNvclVw KQotIERFRklORV9GVU5DIChwYWdlX2Rvd24sIFBhZ2VEb3duKQotIERFRklORV9GVU5DIChwYWdl X3VwLCBQYWdlVXApCi0gI3VuZGVmIERFRklORV9GVU5DCi0tCi1kaWZmIC0tZ2l0IGEvc3JjL2li dXNwYW5lbHNlcnZpY2UuaCBiL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmgKLWluZGV4IGE1YjEzYzcz Li42MGVmODQyYiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmgKLSsrKyBiL3Ny Yy9pYnVzcGFuZWxzZXJ2aWNlLmgKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3Rz PTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDkt MjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLSAqIENvcHlyaWdodCAoYykg MjAxNyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5 cmlnaHQgKGMpIDIwMTctMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMTI4LDYgKzEyOCw5IEBAIHN0cnVjdCBf SUJ1c1BhbmVsU2VydmljZUNsYXNzIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgIHksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICB3LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAg ICAgICAgICAgICAgaCk7Ci0rICAgIHZvaWQgICAgICgqIHBhbmVsX2V4dGVuc2lvbl9yZWNlaXZl ZCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElCdXNQYW5l bFNlcnZpY2UgICAgICAgKnBhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgICAgICAqZGF0YSk7Ci0gCi0gICAgIC8qPCBw cml2YXRlID4qLwotICAgICAvKiBwYWRkaW5nICovCi1AQCAtMjQyLDUgKzI0NSwxNSBAQCB2b2lk IGlidXNfcGFuZWxfc2VydmljZV9wcm9wZXJ0eV9oaWRlICAgICAoSUJ1c1BhbmVsU2VydmljZSAq cGFuZWwsCi0gdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfY29tbWl0X3RleHQgICAgICAgKElCdXNQ YW5lbFNlcnZpY2UgKnBhbmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0KTsKLSAKLSsvKioKLSsgKiBpYnVzX3BhbmVs X3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uOgotKyAqIEBwYW5lbDogQW4gI0lCdXNQYW5lbFNlcnZp Y2UKLSsgKiBAZGF0YTogKHRyYW5zZmVyIGZ1bGwpOiBBICNHVmFyaWFudCBkYXRhIHdoaWNoIGlz IHNlbnQgdG8gYSBwYW5lbCBleHRlbnNpb24uIAotKyAqCi0rICogTm90aWZ5IHRoYXQgYSBkYXRh IGlzIHNlbnQKLSsgKiBieSBzZW5kaW5nIGEgIlBhbmVsRXh0ZW5zaW9uIiBtZXNzYWdlIHRvIElC dXMgcGFuZWwgZXh0ZW5zaW9uIHNlcnZpY2UuCi0rICovCi0rdm9pZCBpYnVzX3BhbmVsX3NlcnZp Y2VfcGFuZWxfZXh0ZW5zaW9uICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICpkYXRh KTsKLSBHX0VORF9ERUNMUwotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9pYnVzc2VyaWFsaXph YmxlLmMgYi9zcmMvaWJ1c3NlcmlhbGl6YWJsZS5jCi1pbmRleCBkN2Y4NjdmNC4uYTM3N2I2MTMg MTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3NlcmlhbGl6YWJsZS5jCi0rKysgYi9zcmMvaWJ1c3Nlcmlh bGl6YWJsZS5jCi1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8q IGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUGVuZyBI dWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIw MTAgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBS ZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTI1MSw3ICsyNTIsNyBAQCBp YnVzX3NlcmlhbGl6YWJsZV9jb3B5IChJQnVzU2VyaWFsaXphYmxlICpvYmplY3QpCi0gfQotIAot IEdWYXJpYW50ICoKLS1pYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKElCdXNTZXJpYWxpemFi bGUgKm9iamVjdCkKLStpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemVfb2JqZWN0IChJQnVzU2Vy aWFsaXphYmxlICpvYmplY3QpCi0gewotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19J U19TRVJJQUxJWkFCTEUgKG9iamVjdCksIEZBTFNFKTsKLSAgICAgZ2Jvb2xlYW4gcmV0dmFsOwot QEAgLTI2Nyw3ICsyNjgsNyBAQCBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKElCdXNTZXJp YWxpemFibGUgKm9iamVjdCkKLSB9Ci0gCi0gSUJ1c1NlcmlhbGl6YWJsZSAqCi0taWJ1c19zZXJp YWxpemFibGVfZGVzZXJpYWxpemUgKEdWYXJpYW50ICp2YXJpYW50KQotK2lidXNfc2VyaWFsaXph YmxlX2Rlc2VyaWFsaXplX29iamVjdCAoR1ZhcmlhbnQgKnZhcmlhbnQpCi0gewotICAgICBnX3Jl dHVybl92YWxfaWZfZmFpbCAodmFyaWFudCAhPSBOVUxMLCBOVUxMKTsKLSAKLWRpZmYgLS1naXQg YS9zcmMvaWJ1c3NlcmlhbGl6YWJsZS5oIGIvc3JjL2lidXNzZXJpYWxpemFibGUuaAotaW5kZXgg NDMyN2VhZWUuLjEwMmRlMWJkIDEwMDY0NAotLS0tIGEvc3JjL2lidXNzZXJpYWxpemFibGUuaAot KysrIGIvc3JjL2lidXNzZXJpYWxpemFibGUuaAotQEAgLTIsNyArMiw4IEBACi0gLyogdmltOnNl dCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAo QykgMjAwOC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENv cHlyaWdodCAoQykgMjAwOC0yMDEzIFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJp Z2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBA IC0yNDgsMTAgKzI0OSwxMCBAQCB2b2lkICAgICAgICAgICAgICAgICBpYnVzX3NlcmlhbGl6YWJs ZV9yZW1vdmVfcWF0dGFjaG1lbnQKLSAgKgotICAqIFNlZSBhbHNvOiBJQnVzU2VyaWFsaXphYmxl Q29weUZ1bmMoKS4KLSAgKi8KLS1JQnVzU2VyaWFsaXphYmxlICAgICppYnVzX3NlcmlhbGl6YWJs ZV9jb3B5ICAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxlICAgKnNlcmlhbGl6YWJsZSk7Ci0r SUJ1c1NlcmlhbGl6YWJsZSAgICAqaWJ1c19zZXJpYWxpemFibGVfY29weSAoSUJ1c1NlcmlhbGl6 YWJsZSAgICpzZXJpYWxpemFibGUpOwotIAotIC8qKgotLSAqIGlidXNfc2VyaWFsaXphYmxlX3Nl cmlhbGl6ZToKLSsgKiBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemVfb2JqZWN0OgotICAqIEBz ZXJpYWxpemFibGU6IEFuICNJQnVzU2VyaWFsaXphYmxlLgotICAqCi0gICogU2VyaWFsaXplIGFu ICNJQnVzU2VyaWFsaXphYmxlIHRvIGEgI0dWYXJpYW50LgotQEAgLTI2MSwxMCArMjYyLDExIEBA IElCdXNTZXJpYWxpemFibGUgICAgKmlidXNfc2VyaWFsaXphYmxlX2NvcHkgICAgICAgICAgICAg KElCdXNTZXJpYWxpemFibGUgICAqc2VyCi0gICoKLSAgKiBTZWUgYWxzbzogSUJ1c1NlcmlhbGl6 YWJsZUNvcHlGdW5jKCkuCi0gICovCi0tR1ZhcmlhbnQgICAgICAgICAgICAqaWJ1c19zZXJpYWxp emFibGVfc2VyaWFsaXplICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZSAgICpzZXJpYWxpemFibGUp OwotK0dWYXJpYW50ICAgICAgICAgICAgKmlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZV9vYmpl Y3QKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzU2Vy aWFsaXphYmxlICAgKnNlcmlhbGl6YWJsZSk7Ci0gCi0gLyoqCi0tICogaWJ1c19zZXJpYWxpemFi bGVfZGVzZXJpYWxpemU6Ci0rICogaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxpemVfb2JqZWN0 OgotICAqIEB2YXJpYW50OiBBICNHVmFyaWFudC4KLSAgKgotICAqIERlc2VyaWFsaXplIGEgI0dW YXJpYW50IHRvIGFuICNJQnVzU2VyaWFsaXphYmxlLwotQEAgLTI3NCw3ICsyNzYsMTEgQEAgR1Zh cmlhbnQgICAgICAgICAgICAqaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICAgICAgICAoSUJ1 c1NlcmlhbGl6YWJsZSAgICpzZXIKLSAgKgotICAqIFNlZSBhbHNvOiBJQnVzU2VyaWFsaXphYmxl Q29weUZ1bmMoKS4KLSAgKi8KLS1JQnVzU2VyaWFsaXphYmxlICAgICppYnVzX3NlcmlhbGl6YWJs ZV9kZXNlcmlhbGl6ZSAgICAgIChHVmFyaWFudCAgICAgICAgICAgKnZhcmlhbnQpOwotK0lCdXNT ZXJpYWxpemFibGUgICAgKmlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplX29iamVjdAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdWYXJpYW50ICAgICAg ICAgICAqdmFyaWFudCk7Ci0rCi0rI2RlZmluZSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUg aWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplX29iamVjdAotKyNkZWZpbmUgaWJ1c19zZXJpYWxp emFibGVfZGVzZXJpYWxpemUgaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxpemVfb2JqZWN0Ci0g Ci0gR19FTkRfREVDTFMKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c3NoYXJlLmMgYi9z cmMvaWJ1c3NoYXJlLmMKLWluZGV4IGI3OTNhOTYyLi5kNzcyNGE2YiAxMDA2NDQKLS0tLSBhL3Ny Yy9pYnVzc2hhcmUuYwotKysrIGIvc3JjL2lidXNzaGFyZS5jCi1AQCAtMiw3ICsyLDggQEAKLSAv KiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29w eXJpZ2h0IChDKSAyMDA4LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+ Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdo dCAoQykgMjAxNS0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCi1AQCAtMjg3LDYgKzI4OCw3IEBAIGlidXNfaW5pdCAodm9pZCkKLSAgICAgSUJV U19UWVBFX0VOR0lORV9ERVNDOwotICAgICBJQlVTX1RZUEVfT0JTRVJWRURfUEFUSDsKLSAgICAg SUJVU19UWVBFX1JFR0lTVFJZOwotKyAgICBJQlVTX1RZUEVfWF9FVkVOVDsKLSB9Ci0gCi0gc3Rh dGljIEdNYWluTG9vcCAqbWFpbl9sb29wID0gTlVMTDsKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c3No YXJlLmggYi9zcmMvaWJ1c3NoYXJlLmgKLWluZGV4IGYzZTIwMTFlLi43NTdkOTE1YiAxMDA2NDQK LS0tLSBhL3NyYy9pYnVzc2hhcmUuaAotKysrIGIvc3JjL2lidXNzaGFyZS5oCi1AQCAtMiw3ICsy LDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVz Ci0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0Bn bWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhhdCwgSW5jLgotKyAq IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IFJlZCBIYXQsIEluYy4KLSAg KgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCi1AQCAtNjUsNiArNjYsMTMgQEAKLSAgKi8KLSAjZGVmaW5lIElC VVNfU0VSVklDRV9QQU5FTCAgICAgICJvcmcuZnJlZWRlc2t0b3AuSUJ1cy5QYW5lbCIKLSAKLSsv KioKLSsgKiBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OOgotKyAqCi0rICogQWRkcmVzcyBv ZiBJQnVzIHBhbmVsIGV4dGVuc2lvbiBzZXJ2aWNlLgotKyAqLwotKyNkZWZpbmUgSUJVU19TRVJW SUNFX1BBTkVMX0VYVEVOU0lPTiAib3JnLmZyZWVkZXNrdG9wLklCdXMuUGFuZWwuRXh0ZW5zaW9u IgotKwotIC8qKgotICAqIElCVVNfU0VSVklDRV9DT05GSUc6Ci0gICoKLUBAIC0xMDAsNiArMTA4 LDEzIEBACi0gICovCi0gI2RlZmluZSBJQlVTX1BBVEhfUEFORUwgICAgICAgICAiL29yZy9mcmVl ZGVza3RvcC9JQnVzL1BhbmVsIgotIAotKy8qKgotKyAqIElCVVNfUEFUSF9QQU5FTF9FWFRFTlNJ T046Ci0rICoKLSsgKiBELUJ1cyBwYXRoIGZvciBJQnVzIHBhbmVsLgotKyAqLwotKyNkZWZpbmUg SUJVU19QQVRIX1BBTkVMX0VYVEVOU0lPTiAiL29yZy9mcmVlZGVza3RvcC9JQnVzL1BhbmVsL0V4 dGVuc2lvbiIKLSsKLSAvKioKLSAgKiBJQlVTX1BBVEhfQ09ORklHOgotICAqCi1kaWZmIC0tZ2l0 IGEvc3JjL2lidXN4ZXZlbnQuYyBiL3NyYy9pYnVzeGV2ZW50LmMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMC4uZGVhODAyNzIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9p YnVzeGV2ZW50LmMKLUBAIC0wLDAgKzEsMTAwNCBAQAotKy8qIC0qLSBtb2RlOiBDOyBjLWJhc2lj LW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8KLSsvKiB2aW06c2V0IGV0 IHN0cz00OiAqLwotKy8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0rICogQ29weXJpZ2h0IChDKSAy MDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHly aWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMuCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r ICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKLSsg KiBVU0EKLSsgKi8KLSsjaW5jbHVkZSAiaWJ1c2ludGVybmFsLmgiCi0rI2luY2x1ZGUgImlidXN4 ZXZlbnQuaCIKLSsKLSsjZGVmaW5lIElCVVNfWF9FVkVOVF9WRVJTSU9OIDEKLSsjZGVmaW5lIElC VVNfWF9FVkVOVF9HRVRfUFJJVkFURShvKSAgXAotKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS SVZBVEUgKChvKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNYRXZlbnRQcml2YXRlKSkKLSsKLStl bnVtIHsKLSsgICAgUFJPUF8wLAotKyAgICBQUk9QX1ZFUlNJT04sCi0rICAgIFBST1BfRVZFTlRf VFlQRSwKLSsgICAgUFJPUF9XSU5ET1csCi0rICAgIFBST1BfU0VORF9FVkVOVCwKLSsgICAgUFJP UF9TRVJJQUwsCi0rICAgIFBST1BfVElNRSwKLSsgICAgUFJPUF9TVEFURSwKLSsgICAgUFJPUF9L RVlWQUwsCi0rICAgIFBST1BfTEVOR1RILAotKyAgICBQUk9QX1NUUklORywKLSsgICAgUFJPUF9I QVJEV0FSRV9LRVlDT0RFLAotKyAgICBQUk9QX0dST1VQLAotKyAgICBQUk9QX0lTX01PRElGSUVS LAotKyAgICBQUk9QX1JPT1QsCi0rICAgIFBST1BfU1VCV0lORE9XLAotKyAgICBQUk9QX1gsCi0r ICAgIFBST1BfWSwKLSsgICAgUFJPUF9YX1JPT1QsCi0rICAgIFBST1BfWV9ST09ULAotKyAgICBQ Uk9QX1NBTUVfU0NSRUVOLAotKyAgICBQUk9QX1BVUlBPU0UKLSt9OwotKwotKwotK3N0cnVjdCBf SUJ1c1hFdmVudFByaXZhdGUgewotKyAgICBndWludCAgICB2ZXJzaW9uOwotKyAgICBndWludDMy ICB0aW1lOwotKyAgICBndWludCAgICBzdGF0ZTsKLSsgICAgZ3VpbnQgICAga2V5dmFsOwotKyAg ICBnaW50ICAgICBsZW5ndGg7Ci0rICAgIGdjaGFyICAgKnN0cmluZzsKLSsgICAgZ3VpbnQxNiAg aGFyZHdhcmVfa2V5Y29kZTsKLSsgICAgZ3VpbnQ4ICAgZ3JvdXA7Ci0rICAgIGdib29sZWFuIGlz X21vZGlmaWVyOwotKyAgICBndWludCAgICByb290OwotKyAgICBndWludCAgICBzdWJ3aW5kb3c7 Ci0rICAgIGdpbnQgICAgIHg7Ci0rICAgIGdpbnQgICAgIHk7Ci0rICAgIGdpbnQgICAgIHhfcm9v dDsKLSsgICAgZ2ludCAgICAgeV9yb290OwotKyAgICBnYm9vbGVhbiBzYW1lX3NjcmVlbjsKLSsg ICAgZ2NoYXIgICAqcHVycG9zZTsKLSt9OwotKwotKy8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8K LStzdGF0aWMgdm9pZCAgICAgIGlidXNfeF9ldmVudF9kZXN0cm95ICAgICAgICAoSUJ1c1hFdmVu dCAgICAgICAgICpldmVudCk7Ci0rc3RhdGljIHZvaWQgICAgICBpYnVzX3hfZXZlbnRfc2V0X3By b3BlcnR5ICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgcHJvcF9pZCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1Zh bHVlICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICpwc3BlYyk7Ci0rc3RhdGljIHZvaWQgICAgICBp YnVzX3hfZXZlbnRfZ2V0X3Byb3BlcnR5ICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg ICAgICAgICAgcHJvcF9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICpwc3BlYyk7Ci0r c3RhdGljIGdib29sZWFuICBpYnVzX3hfZXZlbnRfc2VyaWFsaXplICAgICAgKElCdXNYRXZlbnQg ICAgICAgICAqZXZlbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdWYXJpYW50QnVpbGRlciAgICAqYnVpbGRlcik7Ci0rc3RhdGljIGdpbnQgICAgICBp YnVzX3hfZXZlbnRfZGVzZXJpYWxpemUgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAg ICAgICAgICAqdmFyaWFudCk7Ci0rc3RhdGljIGdib29sZWFuICBpYnVzX3hfZXZlbnRfY29weSAg ICAgICAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZGVzdCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c1hFdmVudCAgICpzcmMpOwotKwot K0dfREVGSU5FX1RZUEUgKElCdXNYRXZlbnQsIGlidXNfeF9ldmVudCwgSUJVU19UWVBFX1NFUklB TElaQUJMRSkKLSsKLStzdGF0aWMgdm9pZAotK2lidXNfeF9ldmVudF9jbGFzc19pbml0IChJQnVz WEV2ZW50Q2xhc3MgKmNsYXNzKQotK3sKLSsgICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNz ID0gR19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSsgICAgSUJ1c09iamVjdENsYXNzICpvYmplY3Rf Y2xhc3MgPSBJQlVTX09CSkVDVF9DTEFTUyAoY2xhc3MpOwotKyAgICBJQnVzU2VyaWFsaXphYmxl Q2xhc3MgKnNlcmlhbGl6YWJsZV9jbGFzcyA9IElCVVNfU0VSSUFMSVpBQkxFX0NMQVNTIChjbGFz cyk7Ci0rCi0rICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9Ci0rICAgICAgICAgICAg KEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNfeF9ldmVudF9zZXRfcHJvcGVydHk7Ci0rICAg IGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9Ci0rICAgICAgICAgICAgKEdPYmplY3RHZXRQ cm9wZXJ0eUZ1bmMpIGlidXNfeF9ldmVudF9nZXRfcHJvcGVydHk7Ci0rCi0rICAgIG9iamVjdF9j bGFzcy0+ZGVzdHJveSA9IChJQnVzT2JqZWN0RGVzdHJveUZ1bmMpIGlidXNfeF9ldmVudF9kZXN0 cm95OwotKwotKyAgICBzZXJpYWxpemFibGVfY2xhc3MtPnNlcmlhbGl6ZSAgID0KLSsgICAgICAg ICAgICAoSUJ1c1NlcmlhbGl6YWJsZVNlcmlhbGl6ZUZ1bmMpIGlidXNfeF9ldmVudF9zZXJpYWxp emU7Ci0rICAgIHNlcmlhbGl6YWJsZV9jbGFzcy0+ZGVzZXJpYWxpemUgPQotKyAgICAgICAgICAg IChJQnVzU2VyaWFsaXphYmxlRGVzZXJpYWxpemVGdW5jKSBpYnVzX3hfZXZlbnRfZGVzZXJpYWxp emU7Ci0rICAgIHNlcmlhbGl6YWJsZV9jbGFzcy0+Y29weSAgICAgICAgPQotKyAgICAgICAgICAg IChJQnVzU2VyaWFsaXphYmxlQ29weUZ1bmMpIGlidXNfeF9ldmVudF9jb3B5OwotKwotKyAgICAv KiBpbnN0YWxsIHByb3BlcnRpZXMgKi8KLSsgICAgLyoqCi0rICAgICAqIElCdXNYRXZlbnQ6dmVy c2lvbjoKLSsgICAgICoKLSsgICAgICogVmVyc2lvbiBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAg ICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNz LAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9WRVJTSU9OLAotKyAgICAgICAgICAgICAgICAg ICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJ2ZXJzaW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAidmVyc2lvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iLAotKyAgICAg ICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5U MzIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19YX0VWRU5UX1ZFUlNJT04sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEQUJMRSkpOwotKwotKyAgICAvKioKLSsg ICAgICogSUJ1c1hFdmVudDpldmVudC10eXBlOgotKyAgICAgKgotKyAgICAgKiBJQnVzWEV2ZW50 VHlwZSBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19p bnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJP UF9FVkVOVF9UWVBFLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImV2 ZW50LXR5cGUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJldmVudCB0eXBlIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAiZXZlbnQgdHlwZSIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAtMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURX UklURSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkp OwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c1hFdmVudDp3aW5kb3c6Ci0rICAgICAqCi0rICAg ICAqIHdpbmRvdyBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwotKyAgICBnX29iamVjdF9j bGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAg ICAgUFJPUF9XSU5ET1csCi0rICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAo IndpbmRvdyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIndpbmRvdyIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgIndpbmRvdyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQzMiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAg IC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OnNlbmQtZXZlbnQ6Ci0rICAgICAqCi0rICAgICAqIHNl bmRfZXZlbnQgb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xh c3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAg IFBST1BfU0VORF9FVkVOVCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQg KCJzZW5kLWV2ZW50IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAic2VuZCBldmVudCIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgInNlbmQgZXZlbnQiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQ4LAotKyAgICAgICAg ICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFE V1JJVEUgfAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp KTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNYRXZlbnQ6c2VyaWFsOgotKyAgICAgKgotKyAg ICAgKiBzZXJpYWwgb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3Rf Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAg ICAgIFBST1BfU0VSSUFMLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25n ICgic2VyaWFsIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAic2VyaWFsIiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAic2VyaWFsIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAwLAot KyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDY0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfAot KyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLSsKLSsg ICAgLyoqCi0rICAgICAqIElCdXNYRXZlbnQ6dGltZToKLSsgICAgICoKLSsgICAgICogdGltZSBv ZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs X3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9USU1F LAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJ0aW1lIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAidGltZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInRp bWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgR19NQVhVSU5UMzIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c1hF dmVudDpzdGF0ZToKLSsgICAgICoKLSsgICAgICogc3RhdGUgb2YgdGhpcyBJQnVzWEV2ZW50Lgot KyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9j bGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfU1RBVEUsCi0rICAgICAgICAgICAgICAg ICAgICBnX3BhcmFtX3NwZWNfdWludCAoInN0YXRlIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAic3RhdGUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0ZSIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQzMiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdf UEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNU UlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OmtleXZhbDoKLSsg ICAgICoKLSsgICAgICoga2V5dmFsIG9mIHRoaXMgSUJ1c1hFdmVudC4KLSsgICAgICovCi0rICAg IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAg ICAgICAgICAgICAgICBQUk9QX0tFWVZBTCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f c3BlY191aW50ICgia2V5dmFsIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAia2V5dmFsIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAia2V5dmFsIiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDMyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFE V1JJVEUgfAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp KTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNYRXZlbnQ6bGVuZ3RoOgotKyAgICAgKgotKyAg ICAgKiBrZXl2YWwgb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3Rf Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAg ICAgIFBST1BfTEVOR1RILAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCAo Imxlbmd0aCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgImxlbmd0aCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgLTEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAg IC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OnN0cmluZzoKLSsgICAgICoKLSsgICAgICogc3RyaW5n IG9mIHRoaXMgSUJ1c1hFdmVudC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh bGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX1NU UklORywKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJzdHJpbmci LAotKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICJzdHJpbmciLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVz WEV2ZW50OmhhcmR3YXJlLWtleWNvZGU6Ci0rICAgICAqCi0rICAgICAqIGhhcmR3YXJlIGtleWNv ZGUgb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5z dGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1Bf SEFSRFdBUkVfS0VZQ09ERSwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50 ICgiaGFyZHdhcmUta2V5Y29kZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgImhhcmR3YXJl IGtleWNvZGUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXJkd2FyZSBrZXljb2RlIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdf TUFYVUlOVDE2LAotKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdf UEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLSsKLSsgICAgLyoqCi0rICAgICAqIElCdXNYRXZlbnQ6 Z3JvdXA6Ci0rICAgICAqCi0rICAgICAqIGdyb3VwIG9mIHRoaXMgSUJ1c1hFdmVudC4KLSsgICAg ICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3Ms Ci0rICAgICAgICAgICAgICAgICAgICBQUk9QX0dST1VQLAotKyAgICAgICAgICAgICAgICAgICAg Z19wYXJhbV9zcGVjX3VpbnQgKCJncm91cCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgImdy b3VwIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXAiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5UOCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1f UkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9P TkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OmlzLW1vZGlmaWVyOgotKyAg ICAgKgotKyAgICAgKiBpc19tb2RpZmllciBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwot KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAg ICAgICAgICAgICAgICAgICAgUFJPUF9JU19NT0RJRklFUiwKLSsgICAgICAgICAgICAgICAgICAg IGdfcGFyYW1fc3BlY19ib29sZWFuICgiaXMtbW9kaWZpZXIiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICJpcyBtb2RpZmllciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgImlzIG1vZGlm aWVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgR19Q QVJBTV9DT05TVFJVQ1RfT05MWSkpOwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c1hFdmVudDpy b290OgotKyAgICAgKgotKyAgICAgKiByb290IHdpbmRvdyBvZiB0aGlzIElCdXNYRXZlbnQuCi0r ICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2Ns YXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9ST09ULAotKyAgICAgICAgICAgICAgICAg ICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJyb290IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAi cm9vdCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInJvb3QiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5UMzIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFN X1JFQURXUklURSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1Rf T05MWSkpOwotKwotKyAgICAvKioKLSsgICAgICogSUJ1c1hFdmVudDpzdWJ3aW5kb3c6Ci0rICAg ICAqCi0rICAgICAqIHN1YndpbmRvdyBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwotKyAg ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAg ICAgICAgICAgICAgICAgUFJPUF9TVUJXSU5ET1csCi0rICAgICAgICAgICAgICAgICAgICBnX3Bh cmFtX3NwZWNfdWludCAoInN1YndpbmRvdyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInN1 YndpbmRvdyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInN1YndpbmRvdyIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQz MiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAg IEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NP TlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50Ong6Ci0rICAg ICAqCi0rICAgICAqIHggb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8KLSsgICAgZ19vYmpl Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAg ICAgICAgIFBST1BfWCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ4 IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAieCIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgIngiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5UMzIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAwLAot KyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAg ICAgKiBJQnVzWEV2ZW50Onk6Ci0rICAgICAqCi0rICAgICAqIHggb2YgdGhpcyBJQnVzWEV2ZW50 LgotKyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVj dF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfWSwKLSsgICAgICAgICAgICAgICAg ICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ5IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAieSIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgInkiLAotKyAgICAgICAgICAgICAgICAgICAgICAg IEdfTUlOSU5UMzIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1f UkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9P TkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50Ongtcm9vdDoKLSsgICAgICoK LSsgICAgICogcm9vdC14IG9mIHRoaXMgSUJ1c1hFdmVudC4KLSsgICAgICovCi0rICAgIGdfb2Jq ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAg ICAgICAgICBQUk9QX1hfUk9PVCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19p bnQgKCJ4LXJvb3QiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IHJvb3QiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICJ4IHJvb3QiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdf TUlOSU5UMzIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVB RFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ KSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50Onktcm9vdDoKLSsgICAgICoKLSsg ICAgICogcm9vdC15IG9mIHRoaXMgSUJ1c1hFdmVudC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0 X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAg ICAgICBQUk9QX1lfUk9PVCwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQg KCJ5LXJvb3QiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IHJvb3QiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICJ5IHJvb3QiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlO SU5UMzIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQzMiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdS SVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7 Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OnNhbWUtc2NyZWVuOgotKyAgICAgKgot KyAgICAgKiBzYW1lX3NjcmVlbiBvZiB0aGlzIElCdXNYRXZlbnQuCi0rICAgICAqLwotKyAgICBn X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotKyAgICAgICAg ICAgICAgICAgICAgUFJPUF9TQU1FX1NDUkVFTiwKLSsgICAgICAgICAgICAgICAgICAgIGdfcGFy YW1fc3BlY19ib29sZWFuICgic2FtZS1zY3JlZW4iLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICJzYW1lIHNjcmVlbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInNhbWUgc2NyZWVuIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAotKyAgICAgICAgICAgICAgICAgICAgICAg IEdfUEFSQU1fUkVBRFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NP TlNUUlVDVF9PTkxZKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJQnVzWEV2ZW50OnB1cnBvc2U6 Ci0rICAgICAqCi0rICAgICAqIHB1cnBvc2Ugb2YgdGhpcyBJQnVzWEV2ZW50LgotKyAgICAgKi8K LSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsg ICAgICAgICAgICAgICAgICAgIFBST1BfUFVSUE9TRSwKLSsgICAgICAgICAgICAgICAgICAgIGdf cGFyYW1fc3BlY19zdHJpbmcgKCJwdXJwb3NlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAi cHVycG9zZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgInB1cnBvc2UiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVB RFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ KSk7Ci0rCi0rICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoY2xhc3MsIHNpemVvZiAoSUJ1 c1hFdmVudFByaXZhdGUpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3hfZXZlbnRfaW5p dCAoSUJ1c1hFdmVudCAqZXZlbnQpCi0rewotKyAgICBldmVudC0+cHJpdiA9IElCVVNfWF9FVkVO VF9HRVRfUFJJVkFURSAoZXZlbnQpOwotKyAgICBldmVudC0+cHJpdi0+dmVyc2lvbiA9IElCVVNf WF9FVkVOVF9WRVJTSU9OOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfeF9ldmVudF9kZXN0 cm95IChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJmV2ZW50 LT5wcml2LT5zdHJpbmcsIGdfZnJlZSk7Ci0rCi0rICAgIElCVVNfT0JKRUNUX0NMQVNTKGlidXNf eF9ldmVudF9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAoZXZlbnQpKTsKLSt9 Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3hfZXZlbnRfc2V0X3Byb3BlcnR5IChJQnVzWEV2ZW50 ICAgKmV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgcHJv cF9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgKnZhbHVlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAqcHNwZWMpCi0rewotKyAg ICBJQnVzWEV2ZW50UHJpdmF0ZSAqcHJpdiA9IGV2ZW50LT5wcml2OwotKwotKyAgICBzd2l0Y2gg KHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0VWRU5UX1RZUEU6Ci0rICAgICAgICBldmVudC0+ ZXZlbnRfdHlwZSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0r ICAgIGNhc2UgUFJPUF9XSU5ET1c6Ci0rICAgICAgICBldmVudC0+d2luZG93ID0gZ192YWx1ZV9n ZXRfdWludCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TRU5EX0VW RU5UOgotKyAgICAgICAgZXZlbnQtPnNlbmRfZXZlbnQgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVl KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfU0VSSUFMOgotKyAgICAgICAgZXZl bnQtPnNlcmlhbCA9IGdfdmFsdWVfZ2V0X3Vsb25nICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsK LSsgICAgY2FzZSBQUk9QX1RJTUU6Ci0rICAgICAgICBwcml2LT50aW1lID0gZ192YWx1ZV9nZXRf dWludCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TVEFURToKLSsg ICAgICAgIHByaXYtPnN0YXRlID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOwotKyAgICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9LRVlWQUw6Ci0rICAgICAgICBwcml2LT5rZXl2YWwgPSBn X3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9Q X0xFTkdUSDoKLSsgICAgICAgIHByaXYtPmxlbmd0aCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUp OwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TVFJJTkc6Ci0rICAgICAgICBnX2Zy ZWUgKHByaXYtPnN0cmluZyk7Ci0rICAgICAgICBwcml2LT5zdHJpbmcgPSBnX3ZhbHVlX2R1cF9z dHJpbmcgKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfSEFSRFdBUkVf S0VZQ09ERToKLSsgICAgICAgIHByaXYtPmhhcmR3YXJlX2tleWNvZGUgPSBnX3ZhbHVlX2dldF91 aW50ICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0dST1VQOgotKyAg ICAgICAgcHJpdi0+Z3JvdXAgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0rICAgICAgICBi cmVhazsKLSsgICAgY2FzZSBQUk9QX0lTX01PRElGSUVSOgotKyAgICAgICAgcHJpdi0+aXNfbW9k aWZpZXIgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsg ICAgY2FzZSBQUk9QX1JPT1Q6Ci0rICAgICAgICBwcml2LT5yb290ID0gZ192YWx1ZV9nZXRfdWlu dCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TVUJXSU5ET1c6Ci0r ICAgICAgICBwcml2LT5zdWJ3aW5kb3cgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0rICAg ICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1g6Ci0rICAgICAgICBwcml2LT54ID0gZ192YWx1 ZV9nZXRfaW50ICh2YWx1ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1k6Ci0r ICAgICAgICBwcml2LT55ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7Ci0rICAgICAgICBicmVh azsKLSsgICAgY2FzZSBQUk9QX1hfUk9PVDoKLSsgICAgICAgIHByaXYtPnhfcm9vdCA9IGdfdmFs dWVfZ2V0X2ludCAodmFsdWUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ZX1JP T1Q6Ci0rICAgICAgICBwcml2LT55X3Jvb3QgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKLSsg ICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfU0FNRV9TQ1JFRU46Ci0rICAgICAgICBwcml2 LT5zYW1lX3NjcmVlbiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSsgICAgICAgIGJy ZWFrOwotKyAgICBjYXNlIFBST1BfUFVSUE9TRToKLSsgICAgICAgIGdfZnJlZSAocHJpdi0+cHVy cG9zZSk7Ci0rICAgICAgICBwcml2LT5wdXJwb3NlID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1 ZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dB Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZXZlbnQsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgfQot K30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfeF9ldmVudF9nZXRfcHJvcGVydHkgKElCdXNYRXZl bnQgKmV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgIHByb3Bf aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAqdmFsdWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAqcHNwZWMpCi0rewotKyAgICBJQnVz WEV2ZW50UHJpdmF0ZSAqcHJpdiA9IGV2ZW50LT5wcml2OwotKyAgICBzd2l0Y2ggKHByb3BfaWQp IHsKLSsgICAgY2FzZSBQUk9QX1ZFUlNJT046Ci0rICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2 YWx1ZSwgcHJpdi0+dmVyc2lvbik7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0VW RU5UX1RZUEU6Ci0rICAgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBldmVudC0+ZXZlbnRf dHlwZSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1dJTkRPVzoKLSsgICAgICAg IGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBldmVudC0+d2luZG93KTsKLSsgICAgICAgIGJyZWFr OwotKyAgICBjYXNlIFBST1BfU0VORF9FVkVOVDoKLSsgICAgICAgIGdfdmFsdWVfc2V0X2ludCAo dmFsdWUsIGV2ZW50LT5zZW5kX2V2ZW50KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBS T1BfU0VSSUFMOgotKyAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcgKHZhbHVlLCBldmVudC0+c2Vy aWFsKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfVElNRToKLSsgICAgICAgIGdf dmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBwcml2LT50aW1lKTsKLSsgICAgICAgIGJyZWFrOwotKyAg ICBjYXNlIFBST1BfU1RBVEU6Ci0rICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgcHJp di0+c3RhdGUpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9LRVlWQUw6Ci0rICAg ICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgcHJpdi0+a2V5dmFsKTsKLSsgICAgICAgIGJy ZWFrOwotKyAgICBjYXNlIFBST1BfTEVOR1RIOgotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2 YWx1ZSwgcHJpdi0+bGVuZ3RoKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfU1RS SU5HOgotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+c3RyaW5nKTsK LSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfSEFSRFdBUkVfS0VZQ09ERToKLSsgICAg ICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBwcml2LT5oYXJkd2FyZV9rZXljb2RlKTsKLSsg ICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfR1JPVVA6Ci0rICAgICAgICBnX3ZhbHVlX3Nl dF91aW50ICh2YWx1ZSwgcHJpdi0+Z3JvdXApOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2Ug UFJPUF9JU19NT0RJRklFUjoKLSsgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBw cml2LT5pc19tb2RpZmllcik7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1JPT1Q6 Ci0rICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgcHJpdi0+cm9vdCk7Ci0rICAgICAg ICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1NVQldJTkRPVzoKLSsgICAgICAgIGdfdmFsdWVfc2V0 X3VpbnQgKHZhbHVlLCBwcml2LT5zdWJ3aW5kb3cpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNh c2UgUFJPUF9YOgotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgcHJpdi0+eCk7Ci0r ICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1k6Ci0rICAgICAgICBnX3ZhbHVlX3NldF9p bnQgKHZhbHVlLCBwcml2LT55KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfWF9S T09UOgotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgcHJpdi0+eF9yb290KTsKLSsg ICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfWV9ST09UOgotKyAgICAgICAgZ192YWx1ZV9z ZXRfaW50ICh2YWx1ZSwgcHJpdi0+eV9yb290KTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNl IFBST1BfU0FNRV9TQ1JFRU46Ci0rICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwg cHJpdi0+c2FtZV9zY3JlZW4pOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9QVVJQ T1NFOgotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+cHVycG9zZSk7 Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5f SU5WQUxJRF9QUk9QRVJUWV9JRCAoZXZlbnQsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgfQotK30K LSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX3hfZXZlbnRfc2VyaWFsaXplIChJQnVzWEV2ZW50 ICAgICAgKmV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAq YnVpbGRlcikKLSt7Ci0rICAgIGdib29sZWFuIHJldHZhbDsKLSsgICAgSUJ1c1hFdmVudFByaXZh dGUgKnByaXY7Ci0rCi0rICAgIHJldHZhbCA9IElCVVNfU0VSSUFMSVpBQkxFX0NMQVNTIChpYnVz X3hfZXZlbnRfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAgc2VyaWFsaXplICgoSUJ1c1Nl cmlhbGl6YWJsZSAqKWV2ZW50LCBidWlsZGVyKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KHJldHZhbCwgRkFMU0UpOwotKyAgICAvKiBFbmQgZGljdCBpdGVyICovCi0rCi0rICAgIHByaXYg PSBldmVudC0+cHJpdjsKLSsjZGVmaW5lIE5PVE5VTEwocykgKChzKSAhPSBOVUxMID8gKHMpIDog IiIpCi0rICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwgeW91IGNhbiBhcHBl bmQgaXQgYXQgdGhlIGVuZCBhbmQKLSsgICAgICogeW91IHNob3VsZCBub3QgY2hhbmdlIHRoZSBz ZXJpYWxpemVkIG9yZGVyIG9mIG5hbWUsIGxvbmduYW1lLAotKyAgICAgKiBkZXNjcmlwdGlvbiwg Li4uIGJlY2F1c2UgdGhlIG9yZGVyIGlzIGFsc28gdXNlZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMK LSsgICAgICogbGlrZXMgaWJ1cy1xdC4gKi8KLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChi dWlsZGVyLCAidSIsIHByaXYtPnZlcnNpb24pOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQg KGJ1aWxkZXIsICJ1IiwgZXZlbnQtPmV2ZW50X3R5cGUpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRl cl9hZGQgKGJ1aWxkZXIsICJ1IiwgZXZlbnQtPndpbmRvdyk7Ci0rICAgIGdfdmFyaWFudF9idWls ZGVyX2FkZCAoYnVpbGRlciwgImkiLCBldmVudC0+c2VuZF9ldmVudCk7Ci0rICAgIGdfdmFyaWFu dF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInQiLCBldmVudC0+c2VyaWFsKTsKLSsgICAgZ192YXJp YW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIHByaXYtPnRpbWUpOwotKyAgICBnX3Zhcmlh bnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1IiwgcHJpdi0+c3RhdGUpOwotKyAgICBnX3Zhcmlh bnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1IiwgcHJpdi0+a2V5dmFsKTsKLSsgICAgZ192YXJp YW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAiaSIsIHByaXYtPmxlbmd0aCk7Ci0rICAgIGdfdmFy aWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInMiLCBOT1ROVUxMIChwcml2LT5zdHJpbmcpKTsK LSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIHByaXYtPmhhcmR3YXJl X2tleWNvZGUpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1IiwgcHJp di0+Z3JvdXApOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJiIiwgcHJp di0+aXNfbW9kaWZpZXIpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1 IiwgcHJpdi0+cm9vdCk7Ci0rICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInUi LCBwcml2LT5zdWJ3aW5kb3cpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIs ICJpIiwgcHJpdi0+eCk7Ci0rICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgImki LCBwcml2LT55KTsKLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAiaSIsIHBy aXYtPnhfcm9vdCk7Ci0rICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgImkiLCBw cml2LT55X3Jvb3QpOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJiIiwg cHJpdi0+c2FtZV9zY3JlZW4pOwotKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIs ICJzIiwgTk9UTlVMTCAocHJpdi0+cHVycG9zZSkpOwotKyN1bmRlZiBOT1ROVUxMCi0rCi0rICAg IHJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgZ2ludAotK2lidXNfeF9ldmVudF9kZXNlcmlh bGl6ZSAoSUJ1c1hFdmVudCAqZXZlbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFy aWFudCAgICp2YXJpYW50KQotK3sKLSsgICAgZ2ludCByZXR2YWw7Ci0rICAgIElCdXNYRXZlbnRQ cml2YXRlICpwcml2OwotKwotKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAo aWJ1c194X2V2ZW50X3BhcmVudF9jbGFzcyktPgotKyAgICAgICAgICAgIGRlc2VyaWFsaXplICgo SUJ1c1NlcmlhbGl6YWJsZSAqKWV2ZW50LCB2YXJpYW50KTsKLSsgICAgZ19yZXR1cm5fdmFsX2lm X2ZhaWwgKHJldHZhbCwgMCk7Ci0rCi0rICAgIHByaXYgPSBldmVudC0+cHJpdjsKLSsgICAgLyog SWYgeW91IHdpbGwgYWRkIGEgbmV3IHByb3BlcnR5LCB5b3UgY2FuIGFwcGVuZCBpdCBhdCB0aGUg ZW5kIGFuZAotKyAgICAgKiB5b3Ugc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHNlcmlhbGl6ZWQgb3Jk ZXIgb2YgbmFtZSwgbG9uZ25hbWUsCi0rICAgICAqIGRlc2NyaXB0aW9uLCAuLi4gYmVjYXVzZSB0 aGUgb3JkZXIgaXMgYWxzbyB1c2VkIGluIG90aGVyIGFwcGxpY2F0aW9ucwotKyAgICAgKiBsaWtl cyBpYnVzLXF0LiAqLwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwr KywgInUiLCAmcHJpdi0+dmVyc2lvbik7Ci0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlh bnQsIHJldHZhbCsrLCAidSIsICZldmVudC0+ZXZlbnRfdHlwZSk7Ci0rICAgIGdfdmFyaWFudF9n ZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZldmVudC0+d2luZG93KTsKLSsgICAg Z192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJpIiwgJmV2ZW50LT5zZW5k X2V2ZW50KTsKLSsgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJ0 IiwgJmV2ZW50LT5zZXJpYWwpOwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCBy ZXR2YWwrKywgInUiLCAmcHJpdi0+dGltZSk7Ci0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAidSIsICZwcml2LT5zdGF0ZSk7Ci0rICAgIGdfdmFyaWFudF9nZXRf Y2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZwcml2LT5rZXl2YWwpOwotKyAgICBnX3Zh cmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImkiLCAmcHJpdi0+bGVuZ3RoKTsK LSsgICAgaWJ1c19nX3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyss Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcml2LT5zdHJpbmcpOwot KyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAmcHJpdi0+ aGFyZHdhcmVfa2V5Y29kZSk7Ci0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJl dHZhbCsrLCAidSIsICZwcml2LT5ncm91cCk7Ci0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAiYiIsICZwcml2LT5pc19tb2RpZmllcik7Ci0rICAgIGdfdmFyaWFu dF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidSIsICZwcml2LT5yb290KTsKLSsgICAg Z192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJ1IiwgJnByaXYtPnN1Yndp bmRvdyk7Ci0rICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAiaSIs ICZwcml2LT54KTsKLSsgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyss ICJpIiwgJnByaXYtPnkpOwotKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2 YWwrKywgImkiLCAmcHJpdi0+eF9yb290KTsKLSsgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFy aWFudCwgcmV0dmFsKyssICJpIiwgJnByaXYtPnlfcm9vdCk7Ci0rICAgIGdfdmFyaWFudF9nZXRf Y2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAiYiIsICZwcml2LT5zYW1lX3NjcmVlbik7Ci0rICAg IGlidXNfZ192YXJpYW50X2dldF9jaGlsZF9zdHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpdi0+cHVycG9zZSk7Ci0rCi0r ICAgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfeF9ldmVu dF9jb3B5IChJQnVzWEV2ZW50ICAgICAgICpkZXN0LAotKyAgICAgICAgICAgICAgICAgICBjb25z dCBJQnVzWEV2ZW50ICpzcmMpCi0rewotKyAgICBnYm9vbGVhbiByZXR2YWw7Ci0rICAgIElCdXNY RXZlbnRQcml2YXRlICpkZXN0X3ByaXYgPSBkZXN0LT5wcml2OwotKyAgICBJQnVzWEV2ZW50UHJp dmF0ZSAqc3JjX3ByaXYgPSBzcmMtPnByaXY7Ci0rCi0rICAgIHJldHZhbCA9IElCVVNfU0VSSUFM SVpBQkxFX0NMQVNTIChpYnVzX3hfZXZlbnRfcGFyZW50X2NsYXNzKS0+Ci0rICAgICAgICAgICAg Y29weSAoKElCdXNTZXJpYWxpemFibGUgKilkZXN0LCAoSUJ1c1NlcmlhbGl6YWJsZSAqKXNyYyk7 Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZBTFNFKTsKLSsKLSsgICAgZGVz dF9wcml2LT52ZXJzaW9uICAgICAgICAgICA9IHNyY19wcml2LT52ZXJzaW9uOwotKyAgICBkZXN0 LT5ldmVudF90eXBlICAgICAgICAgICAgID0gc3JjLT5ldmVudF90eXBlOwotKyAgICBkZXN0LT53 aW5kb3cgICAgICAgICAgICAgICAgID0gc3JjLT53aW5kb3c7Ci0rICAgIGRlc3QtPnNlbmRfZXZl bnQgICAgICAgICAgICAgPSBzcmMtPnNlbmRfZXZlbnQ7Ci0rICAgIGRlc3QtPnNlcmlhbCAgICAg ICAgICAgICAgICAgPSBzcmMtPnNlcmlhbDsKLSsgICAgZGVzdF9wcml2LT50aW1lICAgICAgICAg ICAgICA9IHNyY19wcml2LT50aW1lOwotKyAgICBkZXN0X3ByaXYtPnN0YXRlICAgICAgICAgICAg ID0gc3JjX3ByaXYtPnN0YXRlOwotKyAgICBkZXN0X3ByaXYtPmtleXZhbCAgICAgICAgICAgID0g c3JjX3ByaXYtPmtleXZhbDsKLSsgICAgZGVzdF9wcml2LT5sZW5ndGggICAgICAgICAgICA9IHNy Y19wcml2LT5sZW5ndGg7Ci0rICAgIGRlc3RfcHJpdi0+c3RyaW5nICAgICAgICAgICAgPSBnX3N0 cmR1cCAoc3JjX3ByaXYtPnN0cmluZyk7Ci0rICAgIGRlc3RfcHJpdi0+aGFyZHdhcmVfa2V5Y29k ZSAgPSBzcmNfcHJpdi0+aGFyZHdhcmVfa2V5Y29kZTsKLSsgICAgZGVzdF9wcml2LT5ncm91cCAg ICAgICAgICAgICA9IHNyY19wcml2LT5ncm91cDsKLSsgICAgZGVzdF9wcml2LT5pc19tb2RpZmll ciAgICAgICA9IHNyY19wcml2LT5pc19tb2RpZmllcjsKLSsgICAgZGVzdF9wcml2LT5yb290ICAg ICAgICAgICAgICA9IHNyY19wcml2LT5yb290OwotKyAgICBkZXN0X3ByaXYtPnN1YndpbmRvdyAg ICAgICAgID0gc3JjX3ByaXYtPnN1YndpbmRvdzsKLSsgICAgZGVzdF9wcml2LT54ICAgICAgICAg ICAgICAgICA9IHNyY19wcml2LT54OwotKyAgICBkZXN0X3ByaXYtPnkgICAgICAgICAgICAgICAg ID0gc3JjX3ByaXYtPnk7Ci0rICAgIGRlc3RfcHJpdi0+eF9yb290ICAgICAgICAgICAgPSBzcmNf cHJpdi0+eF9yb290OwotKyAgICBkZXN0X3ByaXYtPnlfcm9vdCAgICAgICAgICAgID0gc3JjX3By aXYtPnlfcm9vdDsKLSsgICAgZGVzdF9wcml2LT5zYW1lX3NjcmVlbiAgICAgICA9IHNyY19wcml2 LT5zYW1lX3NjcmVlbjsKLSsgICAgZGVzdF9wcml2LT5wdXJwb3NlICAgICAgICAgICA9IGdfc3Ry ZHVwIChzcmNfcHJpdi0+cHVycG9zZSk7Ci0rCi0rICAgIHJldHVybiBUUlVFOwotK30KLSsKLStJ QnVzWEV2ZW50ICoKLStpYnVzX3hfZXZlbnRfbmV3IChjb25zdCBnY2hhciAgICpmaXJzdF9wcm9w ZXJ0eV9uYW1lLAotKyAgICAgICAgICAgICAgICAgIC4uLikKLSt7Ci0rICAgIHZhX2xpc3QgdmFy X2FyZ3M7Ci0rICAgIElCdXNYRXZlbnQgKmV2ZW50OwotKwotKyAgICB2YV9zdGFydCAodmFyX2Fy Z3MsIGZpcnN0X3Byb3BlcnR5X25hbWUpOwotKyAgICBldmVudCA9IChJQnVzWEV2ZW50ICopIGdf b2JqZWN0X25ld192YWxpc3QgKElCVVNfVFlQRV9YX0VWRU5ULAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3Byb3BlcnR5X25hbWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2FyZ3MpOwot KyAgICB2YV9lbmQgKHZhcl9hcmdzKTsKLSsgICAgZ19hc3NlcnQgKGV2ZW50LT5wcml2LT52ZXJz aW9uICE9IDApOwotKyAgICBnX2Fzc2VydCAoZXZlbnQtPmV2ZW50X3R5cGUgIT0gSUJVU19YX0VW RU5UX05PVEhJTkcpOwotKyAgICByZXR1cm4gZXZlbnQ7Ci0rfQotKwotK2d1aW50Ci0raWJ1c194 X2V2ZW50X2dldF92ZXJzaW9uIChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7Ci0rICAgIHJldHVybiBl dmVudC0+cHJpdi0+dmVyc2lvbjsKLSt9Ci0rCi0rSUJ1c1hFdmVudFR5cGUKLStpYnVzX3hfZXZl bnRfZ2V0X2V2ZW50X3R5cGUgKElCdXNYRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5f dmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAwKTsKLSsgICAgcmV0dXJuIGV2 ZW50LT5ldmVudF90eXBlOwotK30KLSsKLStndWludDMyCi0raWJ1c194X2V2ZW50X2dldF93aW5k b3cgKElCdXNYRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElC VVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAwKTsKLSsgICAgcmV0dXJuIGV2ZW50LT53aW5kb3c7Ci0r fQotKwotK2dpbnQ4Ci0raWJ1c194X2V2ZW50X2dldF9zZW5kX2V2ZW50IChJQnVzWEV2ZW50ICpl dmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2 ZW50KSwgLTEpOwotKyAgICByZXR1cm4gZXZlbnQtPnNlbmRfZXZlbnQ7Ci0rfQotKwotK2d1bG9u ZwotK2lidXNfeF9ldmVudF9nZXRfc2VyaWFsIChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7Ci0rICAg IHJldHVybiBldmVudC0+c2VyaWFsOwotK30KLSsKLStndWludDMyCi0raWJ1c194X2V2ZW50X2dl dF90aW1lIChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7Ci0rICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50 X3R5cGUpIHsKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTOgotKyAgICBjYXNlIElC VVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0Ogot KyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOwotKyAgICB9Ci0rICAgIHJldHVy biBldmVudC0+cHJpdi0+dGltZTsKLSt9Ci0rCi0rZ3VpbnQKLStpYnVzX3hfZXZlbnRfZ2V0X3N0 YXRlIChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJ QlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7Ci0rICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5 cGUpIHsKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTOgotKyAgICBjYXNlIElCVVNf WF9FVkVOVF9LRVlfUkVMRUFTRToKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAg ICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOwotKyAgICB9Ci0rICAgIHJldHVybiBl dmVudC0+cHJpdi0+c3RhdGU7Ci0rfQotKwotK2d1aW50Ci0raWJ1c194X2V2ZW50X2dldF9rZXl2 YWwgKElCdXNYRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElC VVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAwKTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlw ZSkgewotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19Y X0VWRU5UX0tFWV9SRUxFQVNFOgotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAg ICAgICBnX3JldHVybl92YWxfaWZfcmVhY2hlZCAoMCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2 ZW50LT5wcml2LT5rZXl2YWw7Ci0rfQotKwotK2dpbnQKLStpYnVzX3hfZXZlbnRfZ2V0X2xlbmd0 aCAoSUJ1c1hFdmVudCAqZXZlbnQpCi0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJV U19JU19YX0VWRU5UIChldmVudCksIC0xKTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlw ZSkgewotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19Y X0VWRU5UX0tFWV9SRUxFQVNFOgotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAg ICAgICBnX3JldHVybl92YWxfaWZfcmVhY2hlZCAoLTEpOwotKyAgICB9Ci0rICAgIHJldHVybiBl dmVudC0+cHJpdi0+bGVuZ3RoOwotK30KLSsKLStjb25zdCBnY2hhciAqCi0raWJ1c194X2V2ZW50 X2dldF9zdHJpbmcgKElCdXNYRXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lm X2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAiIik7Ci0rICAgIHN3aXRjaCAoZXZlbnQt PmV2ZW50X3R5cGUpIHsKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTOgotKyAgICBj YXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZh dWx0OgotKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKCIiKTsKLSsgICAgfQotKyAg ICByZXR1cm4gZXZlbnQtPnByaXYtPnN0cmluZzsKLSt9Ci0rCi0rZ3VpbnQxNgotK2lidXNfeF9l dmVudF9nZXRfaGFyZHdhcmVfa2V5Y29kZSAoSUJ1c1hFdmVudCAqZXZlbnQpCi0rewotKyAgICBn X3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCksIDApOwotKyAgICBz d2l0Y2ggKGV2ZW50LT5ldmVudF90eXBlKSB7Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9Q UkVTUzoKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6Ci0rICAgICAgICBicmVh azsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkICgwKTsK LSsgICAgfQotKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPmhhcmR3YXJlX2tleWNvZGU7Ci0rfQot KwotK2d1aW50OAotK2lidXNfeF9ldmVudF9nZXRfZ3JvdXAgKElCdXNYRXZlbnQgKmV2ZW50KQot K3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAw KTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlwZSkgewotKyAgICBjYXNlIElCVVNfWF9F VkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9SRUxFQVNFOgotKyAg ICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3JldHVybl92YWxfaWZfcmVh Y2hlZCAoMCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2ZW50LT5wcml2LT5ncm91cDsKLSt9Ci0r Ci0rZ2Jvb2xlYW4KLStpYnVzX3hfZXZlbnRfZ2V0X2lzX21vZGlmaWVyIChJQnVzWEV2ZW50ICpl dmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2 ZW50KSwgMCk7Ci0rICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKLSsgICAgY2FzZSBJ QlVTX1hfRVZFTlRfS0VZX1BSRVNTOgotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFT RToKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgZ19yZXR1cm5fdmFs X2lmX3JlYWNoZWQgKDApOwotKyAgICB9Ci0rICAgIHJldHVybiBldmVudC0+cHJpdi0+aXNfbW9k aWZpZXI7Ci0rfQotKwotK2d1aW50MzIKLStpYnVzX3hfZXZlbnRfZ2V0X3Jvb3QgKElCdXNYRXZl bnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVO VCAoZXZlbnQpLCAwKTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlwZSkgewotKyAgICBj YXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9S RUxFQVNFOgotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3JldHVy bl92YWxfaWZfcmVhY2hlZCAoMCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2ZW50LT5wcml2LT5y b290OwotK30KLSsKLStndWludDMyCi0raWJ1c194X2V2ZW50X2dldF9zdWJ3aW5kb3cgKElCdXNY RXZlbnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9F VkVOVCAoZXZlbnQpLCAwKTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlwZSkgewotKyAg ICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tF WV9SRUxFQVNFOgotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3Jl dHVybl92YWxfaWZfcmVhY2hlZCAoMCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2ZW50LT5wcml2 LT5zdWJ3aW5kb3c7Ci0rfQotKwotK2dpbnQKLStpYnVzX3hfZXZlbnRfZ2V0X3ggKElCdXNYRXZl bnQgKmV2ZW50KQotK3sKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVO VCAoZXZlbnQpLCAwKTsKLSsgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlwZSkgewotKyAgICBj YXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9S RUxFQVNFOgotKyAgICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3JldHVy bl92YWxfaWZfcmVhY2hlZCAoMCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2ZW50LT5wcml2LT54 OwotK30KLSsKLStnaW50Ci0raWJ1c194X2V2ZW50X2dldF95IChJQnVzWEV2ZW50ICpldmVudCkK LSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwg MCk7Ci0rICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKLSsgICAgY2FzZSBJQlVTX1hf RVZFTlRfS0VZX1BSRVNTOgotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKLSsg ICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3Jl YWNoZWQgKDApOwotKyAgICB9Ci0rICAgIHJldHVybiBldmVudC0+cHJpdi0+eTsKLSt9Ci0rCi0r Z2ludAotK2lidXNfeF9ldmVudF9nZXRfeF9yb290IChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0r ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7Ci0r ICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRf S0VZX1BSRVNTOgotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKLSsgICAgICAg IGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQg KDApOwotKyAgICB9Ci0rICAgIHJldHVybiBldmVudC0+cHJpdi0+eF9yb290OwotK30KLSsKLStn aW50Ci0raWJ1c194X2V2ZW50X2dldF95X3Jvb3QgKElCdXNYRXZlbnQgKmV2ZW50KQotK3sKLSsg ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAwKTsKLSsg ICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlwZSkgewotKyAgICBjYXNlIElCVVNfWF9FVkVOVF9L RVlfUFJFU1M6Ci0rICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9SRUxFQVNFOgotKyAgICAgICAg YnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICBnX3JldHVybl92YWxfaWZfcmVhY2hlZCAo MCk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIGV2ZW50LT5wcml2LT55X3Jvb3Q7Ci0rfQotKwotK2di b29sZWFuCi0raWJ1c194X2V2ZW50X2dldF9zYW1lX3NjcmVlbiAoSUJ1c1hFdmVudCAqZXZlbnQp Ci0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCks IFRSVUUpOwotKyAgICBzd2l0Y2ggKGV2ZW50LT5ldmVudF90eXBlKSB7Ci0rICAgIGNhc2UgSUJV U19YX0VWRU5UX0tFWV9QUkVTUzoKLSsgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6 Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIGdfcmV0dXJuX3ZhbF9p Zl9yZWFjaGVkIChUUlVFKTsKLSsgICAgfQotKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnNhbWVf c2NyZWVuOwotK30KLSsKLStjb25zdCBnY2hhciAqCi0raWJ1c194X2V2ZW50X2dldF9wdXJwb3Nl IChJQnVzWEV2ZW50ICpldmVudCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVT X0lTX1hfRVZFTlQgKGV2ZW50KSwgIiIpOwotKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnB1cnBv c2U7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzeGV2ZW50LmggYi9zcmMvaWJ1c3hldmVudC5o Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLmYzNWYxNGU0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9zcmMvaWJ1c3hldmVudC5oCi1AQCAtMCwwICsxLDI5NCBAQAotKy8qIC0q LSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0g Ki8KLSsvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotKy8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0r ICogQ29weXJpZ2h0IChDKSAyMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMuCi0rICoKLSsgKiBU aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRo IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgIDAyMTEwLTEzMDEKLSsgKiBVU0EKLSsgKi8KLSsKLSsjaWYgIWRlZmluZWQgKF9fSUJVU19I X0lOU0lERV9fKSAmJiAhZGVmaW5lZCAoSUJVU19DT01QSUxBVElPTikKLSsjZXJyb3IgIk9ubHkg PGlidXMuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5IgotKyNlbmRpZgotKwotKyNpZm5kZWYg X19JQlVTX1hfRVZFTlRfSF8KLSsjZGVmaW5lIF9fSUJVU19YX0VWRU5UX0hfCi0rCi0rLyoqCi0r ICogU0VDVElPTjogaWJ1c3hldmVudAotKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogWEV2ZW50IHdy YXBwZXIgb2JqZWN0Ci0rICogQHRpdGxlOiBJQnVzWEV2ZW50Ci0rICogQHN0YWJpbGl0eTogVW5z dGFibGUKLSsgKgotKyAqIEFuIElCdXNYRXZlbnQgcHJvdmlkZXMgYSB3cmFwcGVyIG9mIFhFdmVu dC4KLSsgKgotKyAqIHNlZV9hbHNvOiAjSUJ1c0NvbXBvbmVudCwgI0lCdXNFbmdpbmVEZXNjCi0r ICovCi0rCi0rI2luY2x1ZGUgImlidXNzZXJpYWxpemFibGUuaCIKLSsKLSsvKgotKyAqIFR5cGUg bWFjcm9zLgotKyAqLwotKwotKy8qIGRlZmluZSBHT0JKRUNUIG1hY3JvcyAqLwotKyNkZWZpbmUg SUJVU19UWVBFX1hfRVZFTlQgICAgICAgICAgICBcCi0rICAgIChpYnVzX3hfZXZlbnRfZ2V0X3R5 cGUgKCkpCi0rI2RlZmluZSBJQlVTX1hfRVZFTlQob2JqKSAgICAgICAgICAgIFwKLSsgICAgKEdf VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNY RXZlbnQpKQotKyNkZWZpbmUgSUJVU19YX0VWRU5UX0NMQVNTKGtsYXNzKSAgICBcCi0rICAgIChH X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNY RXZlbnRDbGFzcykpCi0rI2RlZmluZSBJQlVTX0lTX1hfRVZFTlQob2JqKSAgICAgICAgIFwKLSsg ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgSUJVU19UWVBFX1hfRVZFTlQp KQotKyNkZWZpbmUgSUJVU19JU19YX0VWRU5UX0NMQVNTKGtsYXNzKSBcCi0rICAgIChHX1RZUEVf Q0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgSUJVU19UWVBFX1hfRVZFTlQpKQotKyNkZWZpbmUg SUJVU19YX0VWRU5UX0dFVF9DTEFTUyhvYmopICBcCi0rICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VU X0NMQVNTICgob2JqKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNYRXZlbnRDbGFzcykpCi0rCi0r R19CRUdJTl9ERUNMUwotKwotK3R5cGVkZWYgc3RydWN0IF9JQnVzWEV2ZW50IElCdXNYRXZlbnQ7 Ci0rdHlwZWRlZiBzdHJ1Y3QgX0lCdXNYRXZlbnRDbGFzcyBJQnVzWEV2ZW50Q2xhc3M7Ci0rdHlw ZWRlZiBzdHJ1Y3QgX0lCdXNYRXZlbnRQcml2YXRlIElCdXNYRXZlbnRQcml2YXRlOwotKwotK3R5 cGVkZWYgZW51bSB7Ci0rICAgIElCVVNfWF9FVkVOVF9OT1RISU5HICAgICAgICAgICA9IC0xLAot KyAgICBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTICAgICAgICAgPSAwLAotKyAgICBJQlVTX1hfRVZF TlRfS0VZX1JFTEVBU0UgICAgICAgPSAxLAotKyAgICBJQlVTX1hfRVZFTlRfT1RIRVIgICAgICAg ICAgICAgPSAyLAotKyAgICBJQlVTX1hfRVZFTlRfRVZFTlRfTEFTVCAgICAgICAgLyogaGVscGVy IHZhcmlhYmxlIGZvciBkZWNscyAqLwotK30gSUJ1c1hFdmVudFR5cGU7Ci0rCi0rLyoqCi0rICog SUJ1c1hFdmVudDoKLSsgKiBAdHlwZTogZXZlbnQgdHlwZQotKyAqCi0rICogSUJ1c0VuZ2luZSBw cm9wZXJ0aWVzLgotKyAqLwotK3N0cnVjdCBfSUJ1c1hFdmVudCB7Ci0rICAgIC8qPCBwcml2YXRl ID4qLwotKyAgICBJQnVzU2VyaWFsaXphYmxlIHBhcmVudDsKLSsgICAgSUJ1c1hFdmVudFByaXZh dGUgKnByaXY7Ci0rCi0rICAgIC8qIGluc3RhbmNlIG1lbWJlcnMgKi8KLSsgICAgLyo8IHB1Ymxp YyA+Ki8KLSsgICAgSUJ1c1hFdmVudFR5cGUgZXZlbnRfdHlwZTsKLSsgICAgZ3VpbnQgICAgICAg ICAgd2luZG93OwotKyAgICBnaW50OCAgICAgICAgICBzZW5kX2V2ZW50OwotKyAgICBndWxvbmcg ICAgICAgICBzZXJpYWw7Ci0rfTsKLSsKLStzdHJ1Y3QgX0lCdXNYRXZlbnRDbGFzcyB7Ci0rICAg IC8qPCBwcml2YXRlID4qLwotKyAgICBJQnVzU2VyaWFsaXphYmxlQ2xhc3MgcGFyZW50OwotKwot KyAgICAvKiBjbGFzcyBtZW1iZXJzICovCi0rICAgIC8qPCBwdWJsaWMgPiovCi0rCi0rICAgIC8q PCBwcml2YXRlID4qLwotKyAgICAvKiBwYWRkaW5nICovCi0rICAgIGdwb2ludGVyIHBkdW1teVsx MF07Ci0rfTsKLSsKLStHVHlwZSAgICAgICAgaWJ1c194X2V2ZW50X2dldF90eXBlICAgICAgICh2 b2lkKTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfbmV3OgotKyAqIEBmaXJzdF9wcm9wZXJ0 eV9uYW1lOiBOYW1lIG9mIHRoZSBmaXJzdCBwcm9wZXJ0eS4KLSsgKiBALi4uOiB0aGUgTlVMTC10 ZXJtaW5hdGVkIGFyZ3VtZW50cyBvZiB0aGUgcHJvcGVydGllcyBhbmQgdmFsdWVzLgotKyAqCi0r ICogQ3JlYXRlIGEgbmV3ICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0dXJuczogQSBuZXdseSBh bGxvY2F0ZWQgI0lCdXNYRXZlbnQuIEUuZy4KLSsgKiBpYnVzX3hfZXZlbnRfbmV3ICgiZXZlbnQt dHlwZSIsIElCVVNfWF9FVkVOVF9LRVlfUFJFU1MsIE5VTEwpOwotKyAqLwotK0lCdXNYRXZlbnQg KiAgIGlidXNfeF9ldmVudF9uZXcgICAgICAgICAgICAoY29uc3QgZ2NoYXIKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmaXJzdF9w cm9wZXJ0eV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLi4uKTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfZ2V0X3ZlcnNpb246Ci0rICogQGV2 ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJldHVybnM6IFZlcnNpb24gb2YgI0lCdXNY RXZlbnQKLSsgKi8KLStndWludCAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3ZlcnNpb24gICAg KElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOwotKwotKy8qKgotKyAqIGlidXNfeF9ldmVudF9n ZXRfZXZlbnRfdHlwZToKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0 dXJuczogSUJ1c1hFdmVudFR5cGUgb2YgI0lCdXNYRXZlbnQKLSsgKi8KLStJQnVzWEV2ZW50VHlw ZSBpYnVzX3hfZXZlbnRfZ2V0X2V2ZW50X3R5cGUgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQp OwotKwotKy8qKgotKyAqIGlidXNfeF9ldmVudF9nZXRfd2luZG93OgotKyAqIEBldmVudDogQW4g I0lCdXNYRXZlbnQuCi0rICoKLSsgKiBSZXR1cm5zOiBYSUQgb2YgI0lCdXNYRXZlbnQKLSsgKi8K LStndWludDMyICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3dpbmRvdyAgICAgKElCdXNYRXZlbnQg ICAgICAgICAqZXZlbnQpOwotKwotKy8qKgotKyAqIGlidXNfeF9ldmVudF9nZXRfc2VuZF9ldmVu dDoKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0dXJuczogc2VuZF9l dmVudCBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2dpbnQ4ICAgICAgICAgIGlidXNfeF9ldmVudF9n ZXRfc2VuZF9ldmVudCAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICog aWJ1c194X2V2ZW50X2dldF9zZXJpYWw6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsg KgotKyAqIFJldHVybnM6IHNlcmlhbCBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2d1bG9uZyAgICAg ICAgIGlidXNfeF9ldmVudF9nZXRfc2VyaWFsICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVu dCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50X2dldF90aW1lOgotKyAqIEBldmVudDogQW4g I0lCdXNYRXZlbnQuCi0rICoKLSsgKiBSZXR1cm5zOiB0aW1lIG9mICNJQnVzWEV2ZW50Ci0rICov Ci0rZ3VpbnQzMiAgICAgICAgaWJ1c194X2V2ZW50X2dldF90aW1lICAgICAgIChJQnVzWEV2ZW50 ICAgICAgICAgKmV2ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfZ2V0X3N0YXRlOgot KyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCi0rICoKLSsgKiBSZXR1cm5zOiBzdGF0ZSBvZiAj SUJ1c1hFdmVudAotKyAqLwotK2d1aW50ICAgICAgICAgIGlidXNfeF9ldmVudF9nZXRfc3RhdGUg ICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2 ZW50X2dldF9rZXl2YWw6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJl dHVybnM6IGtleXZhbCBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2d1aW50ICAgICAgICAgIGlidXNf eF9ldmVudF9nZXRfa2V5dmFsICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Ci0rCi0r LyoqCi0rICogaWJ1c194X2V2ZW50X2dldF9sZW5ndGg6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hF dmVudC4KLSsgKgotKyAqIFJldHVybnM6IGxlbmd0aCBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2dp bnQgICAgICAgICAgIGlidXNfeF9ldmVudF9nZXRfbGVuZ3RoICAgICAoSUJ1c1hFdmVudCAgICAg ICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50X2dldF9zdHJpbmc6Ci0rICog QGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJldHVybnM6IHN0cmluZyBvZiAjSUJ1 c1hFdmVudAotKyAqLwotK2NvbnN0IGdjaGFyICogIGlidXNfeF9ldmVudF9nZXRfc3RyaW5nICAg ICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50 X2dldF9oYXJkd2FyZV9rZXljb2RlOgotKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCi0rICoK LSsgKiBSZXR1cm5zOiBoYXJkd2FyZSBrZXljb2RlIG9mICNJQnVzWEV2ZW50Ci0rICovCi0rZ3Vp bnQxNiAgICAgICAgaWJ1c194X2V2ZW50X2dldF9oYXJkd2FyZV9rZXljb2RlCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2 ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfZ2V0X2dyb3VwOgotKyAqIEBldmVudDog QW4gI0lCdXNYRXZlbnQuCi0rICoKLSsgKiBSZXR1cm5zOiBncm91cCBvZiAjSUJ1c1hFdmVudAot KyAqLwotK2d1aW50OCAgICAgICAgIGlidXNfeF9ldmVudF9nZXRfZ3JvdXAgICAgICAoSUJ1c1hF dmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50X2dldF9pc19t b2RpZmllcjoKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0dXJuczog aXNfbW9kaWZpZXIgb2YgI0lCdXNYRXZlbnQKLSsgKi8KLStnYm9vbGVhbiAgICAgICBpYnVzX3hf ZXZlbnRfZ2V0X2lzX21vZGlmaWVyCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVz X3hfZXZlbnRfZ2V0X3N1YndpbmRvdzoKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAq Ci0rICogUmV0dXJuczogc3Vid2luZG93IG9mICNJQnVzWEV2ZW50Ci0rICovCi0rZ3VpbnQzMiAg ICAgICAgaWJ1c194X2V2ZW50X2dldF9zdWJ3aW5kb3cgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2 ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfZ2V0X3Jvb3Q6Ci0rICogQGV2ZW50OiBB biAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJldHVybnM6IHJvb3Qgd2luZG93IG9mICNJQnVzWEV2 ZW50Ci0rICovCi0rZ3VpbnQzMiAgICAgICAgaWJ1c194X2V2ZW50X2dldF9yb290ICAgICAgIChJ QnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVzX3hfZXZlbnRfZ2V0 X3g6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJldHVybnM6IHggb2Yg I0lCdXNYRXZlbnQKLSsgKi8KLStnaW50ICAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3ggICAg ICAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOwotKwotKy8qKgotKyAqIGlidXNfeF9l dmVudF9nZXRfeToKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0dXJu czogeSBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2dpbnQgICAgICAgICAgIGlidXNfeF9ldmVudF9n ZXRfeSAgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICog aWJ1c194X2V2ZW50X2dldF94X3Jvb3Q6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsg KgotKyAqIFJldHVybnM6IHgtcm9vdCBvZiAjSUJ1c1hFdmVudAotKyAqLwotK2dpbnQgICAgICAg ICAgIGlidXNfeF9ldmVudF9nZXRfeF9yb290ICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVu dCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50X2dldF95X3Jvb3Q6Ci0rICogQGV2ZW50OiBB biAjSUJ1c1hFdmVudC4KLSsgKgotKyAqIFJldHVybnM6IHktcm9vdCBvZiAjSUJ1c1hFdmVudAot KyAqLwotK2dpbnQgICAgICAgICAgIGlidXNfeF9ldmVudF9nZXRfeV9yb290ICAgICAoSUJ1c1hF dmVudCAgICAgICAgICpldmVudCk7Ci0rCi0rLyoqCi0rICogaWJ1c194X2V2ZW50X2dldF9zYW1l X3NjcmVlbjoKLSsgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgotKyAqCi0rICogUmV0dXJuczog c2FtZV9zY3JlZW4gb2YgI0lCdXNYRXZlbnQKLSsgKi8KLStnYm9vbGVhbiAgICAgICBpYnVzX3hf ZXZlbnRfZ2V0X3NhbWVfc2NyZWVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKLSsKLSsvKioKLSsgKiBpYnVz X3hfZXZlbnRfZ2V0X3B1cnBvc2U6Ci0rICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KLSsgKgot KyAqIFJldHVybnM6IHB1cnBvc2Ugb2YgI0lCdXNYRXZlbnQKLSsgKi8KLStjb25zdCBnY2hhciAq ICBpYnVzX3hfZXZlbnRfZ2V0X3B1cnBvc2UgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQp OwotKwotK0dfRU5EX0RFQ0xTCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL3J1bnRl c3QgYi9zcmMvdGVzdHMvcnVudGVzdAotaW5kZXggOTFjNGU5NWYuLjBlNDNmZWU1IDEwMDc1NQot LS0tIGEvc3JjL3Rlc3RzL3J1bnRlc3QKLSsrKyBiL3NyYy90ZXN0cy9ydW50ZXN0Ci1AQCAtMTA2 LDYgKzEwNiw3IEBAIHRlc3QgLWQgJHRzdGRpciB8fCBta2RpciAkdHN0ZGlyCi0gICAgIC0tZGFl bW9uaXplIFwKLSAgICAgLS1jYWNoZT1ub25lIFwKLSAgICAgLS1wYW5lbD1kaXNhYmxlIFwKLSsg ICAgLS1wYW5lbC1leHRlbnNpb249ZGlzYWJsZSBcCi0gICAgIC0tY29uZmlnPWRlZmF1bHQgXAot ICAgICAtLXZlcmJvc2U7Ci0gCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9NYWtlZmlsZS5hbSBiL3Vp L2d0azMvTWFrZWZpbGUuYW0KLWluZGV4IDc4NmI4MGU2Li4wYThmNDIwMCAxMDA2NDQKLS0tLSBh L3VpL2d0azMvTWFrZWZpbGUuYW0KLSsrKyBiL3VpL2d0azMvTWFrZWZpbGUuYW0KLUBAIC0zLDgg KzMsOCBAQAotICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIw MDctMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0jIENvcHlyaWdo dCAoYykgMjAxNS0yMDE3IFRha2FvIEZ1andpYXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgotLSMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTcgUmVkIEhhdCwgSW5jLgotKyMgQ29weXJpZ2h0 IChjKSAyMDE1LTIwMTggVGFrYW8gRnVqd2lhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxOCBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot ICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotQEAgLTMwLDcgKzMwLDcgQEAgY29tcG9uZW50X0RBVEEgPSBcCi0gCSQoTlVMTCkKLSBj b21wb25lbnRkaXIgPSAkKHBrZ2RhdGFkaXIpL2NvbXBvbmVudAotIAotLWd0a3BhbmVsLnhtbDog Z3RrcGFuZWwueG1sLmluCi0rJS54bWw6ICUueG1sLmluCi0gCSQoQU1fVl9HRU4pIHNlZCBcCi0g CQktZSAnc3xAVkVSU0lPTltAXXwkKFZFUlNJT04pfGcnIFwKLSAJCS1lICdzfEBsaWJleGVjZGly W0BdfCQobGliZXhlY2Rpcil8ZycgJDwgPiAkQC50bXAgJiYgXAotQEAgLTEwOCw2ICsxMDgsNyBA QCBsaWJleGVjX1BST0dSQU1TID0gaWJ1cy11aS1ndGszCi0gCi0gaWJ1c191aV9ndGszX1NPVVJD RVMgPSBcCi0gCWFwcGxpY2F0aW9uLnZhbGEgXAotKwliaW5kaW5nY29tbW9uLnZhbGEgXAotIAlj YW5kaWRhdGVhcmVhLnZhbGEgXAotIAljYW5kaWRhdGVwYW5lbC52YWxhIFwKLSAJZW1vamllci52 YWxhIFwKLUBAIC0xNTUsOSArMTU2LDEyIEBAIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICQoZW1vamlfaGVhZGVycykgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgJChtYW5fc2V2ZW5faW5fZmlsZXMpICAgICAgICAgICAgICAgXAotICAgICBlbW9qaWVy YXBwLnZhbGEgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGV4dGVuc2lvbi52YWxhICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgZ3RrZXh0ZW5zaW9uLnhtbC5pbiAgICAgICAgICAgICAg ICAgXAotICAgICBndGtwYW5lbC54bWwuaW4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgIG5v dGlmaWNhdGlvbi1pdGVtLnhtbCAgICAgICAgICAgICAgIFwKLSAgICAgbm90aWZpY2F0aW9uLXdh dGNoZXIueG1sICAgICAgICAgICAgXAotKyAgICBwYW5lbGJpbmRpbmcudmFsYSAgICAgICAgICAg ICAgICAgICBcCi0gICAgICQoTlVMTCkKLSAKLSBpZiBFTkFCTEVfRU1PSklfRElDVAotQEAgLTE2 NywxMCArMTcxLDggQEAgbGliZXhlY19QUk9HUkFNUyArPSBpYnVzLXVpLWVtb2ppZXIKLSAKLSBp YnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVMgPSAgICAgICAgICAgICAgICAgICBcCi0gICAgIGVt b2ppZXJhcHAudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBjYW5kaWRh dGVhcmVhLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZW1vamllci52YWxh ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGljb253aWRnZXQudmFsYSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBwYW5nby52YWxhICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgc2VwYXJhdG9yLnZhbGEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICQoTlVMTCkKLSBpYnVzX3VpX2Vtb2ppZXJfU09VUkNF UyA9ICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTk4LDYgKzIwMCw1MyBAQCBlbW9qaWVy YXBwLm86ICQoc3JjZGlyKS9lbW9qaWVyYXBwLmMKLSAJJChBTV9WX0NDX25vKSQoQ09NUElMRSkg LWMgLW8gJEAgJDwKLSAJJChOVUxMKQotIAotK2NvbXBvbmVudF9EQVRBICs9IGd0a2V4dGVuc2lv bi54bWwKLStDTEVBTkZJTEVTICs9IGd0a2V4dGVuc2lvbi54bWwKLStsaWJleGVjX1BST0dSQU1T ICs9IGlidXMtZXh0ZW5zaW9uLWd0azMKLSsKLStpYnVzX2V4dGVuc2lvbl9ndGszX1ZBTEFTT1VS Q0VTID0gICAgICAgICAgICAgICBcCi0rICAgIGJpbmRpbmdjb21tb24udmFsYSAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBlbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgZXh0ZW5zaW9uLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgIGljb253aWRnZXQudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICBrZXliaW5kaW5nbWFuYWdlci52YWxhICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgcGFuZWxiaW5kaW5nLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQo TlVMTCkKLStpYnVzX2V4dGVuc2lvbl9ndGszX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAgICBc Ci0rICAgICQoaWJ1c19leHRlbnNpb25fZ3RrM19WQUxBU09VUkNFUzoudmFsYT0uYykgXAotKyAg ICAkKE5VTEwpCi0rCi0raWJ1c19leHRlbnNpb25fZ3RrM19MREFERCA9ICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICAkKEFNX0xEQUREKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgJChOVUxMKQotK2lidXNfZXh0ZW5zaW9uX2d0azNfVkFMQUZMQUdTID0gICAgICAg ICAgICAgICAgIFwKLSsgICAgJChBTV9WQUxBRkxBR1MpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICQoTlVMTCkKLSsKLSsjIFRoaXMgbGluZSBhbmQgZm9vX1ZBTEFTT1VSQ0VT IGxpbmUgY2FuIGRlbGV0ZSB0aGUgZHVwbGljYXRlZCBlbnRyaWVzCi0rIyBvZiBlbW9qaWVyLmM6 IGVtb2ppZXIudmFsYQotK2V4dGVuc2lvbi5jOiAkKGlidXNfZXh0ZW5zaW9uX2d0azNfVkFMQVNP VVJDRVMpCi0rCSQoQU1fVl9WQUxBQykkKGFtX19jZCkgJChzcmNkaXIpICYmICQoVkFMQUMpICQo QU1fVkFMQUZMQUdTKSBcCi0rJChWQUxBRkxBR1MpIC1DICQoaWJ1c19leHRlbnNpb25fZ3RrM19W QUxBU09VUkNFUykKLSsJJChOVUxMKQotKyMgbWFrZSBkaXN0IGNyZWF0ZXMgLmMgZmlsZXMgaW4g YSBkaWZmZXJlbnQgc3JjZGlyCi0rZXh0ZW5zaW9uLm86ICQoc3JjZGlyKS9leHRlbnNpb24uYwot KwkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBcCi0rCURFUERJ Uj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgXAotKwkkKEFNX1ZfQ0Nfbm8pJChD T01QSUxFKSAtYyAtbyAkQCAkPAotKwkkKE5VTEwpCi0rIyBvZiBlbW9qaWVyLmM6IGVtb2ppZXIu dmFsYQotK3BhbmVsYmluZGluZy5jOiAkKGlidXNfZXh0ZW5zaW9uX2d0azNfVkFMQVNPVVJDRVMp Ci0rCSQoQU1fVl9WQUxBQykkKGFtX19jZCkgJChzcmNkaXIpICYmICQoVkFMQUMpICQoQU1fVkFM QUZMQUdTKSBcCi0rJChWQUxBRkxBR1MpIC1DICQoaWJ1c19leHRlbnNpb25fZ3RrM19WQUxBU09V UkNFUykKLSsJJChOVUxMKQotKyMgbWFrZSBkaXN0IGNyZWF0ZXMgLmMgZmlsZXMgaW4gYSBkaWZm ZXJlbnQgc3JjZGlyCi0rcGFuZWxiaW5kaW5nLm86ICQoc3JjZGlyKS9wYW5lbGJpbmRpbmcuYwot KwkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBcCi0rCURFUERJ Uj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgXAotKwkkKEFNX1ZfQ0Nfbm8pJChD T01QSUxFKSAtYyAtbyAkQCAkPAotKwkkKE5VTEwpCi0rCi0gbWFuX3NldmVuX2ZpbGVzID0gJCht YW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49LjcpCi0gbWFuX3NldmVuX0RBVEEgPSQobWFuX3NldmVu X2ZpbGVzOi43PS43Lmd6KQotIG1hbl9zZXZlbmRpciA9ICQobWFuZGlyKS9tYW43Ci1kaWZmIC0t Z2l0IGEvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEgYi91aS9ndGszL2JpbmRpbmdjb21tb24u dmFsYQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi40MTcxZjI5ZAotLS0t IC9kZXYvbnVsbAotKysrIGIvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLUBAIC0wLDAgKzEs MjE1IEBACi0rLyogdmltOnNldCBldCBzdHM9NCBzdz00OgotKyAqCi0rICogaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKLSsgKgotKyAqIENvcHlyaWdodChjKSAyMDE4IFBlbmcgSHVhbmcgPHNoYXduLnAu aHVhbmdAZ21haWwuY29tPgotKyAqIENvcHlyaWdodChjKSAyMDE4IFRha2FvIEZ1andpYXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK LSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK LSsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAq Ci0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCi0rICog VVNBCi0rICovCi0rCi0rLyogVGhpcyBmaWxlIGRlcGVuZHMgb24ga2V5YmluZGluZ21hbmFnZXIu dmFsYSAqLwotKwotK2NsYXNzIEJpbmRpbmdDb21tb24gewotKyAgICBwdWJsaWMgZW51bSBLZXlF dmVudEZ1bmNUeXBlIHsKLSsgICAgICAgIEFOWSwKLSsgICAgICAgIElNRV9TV0lUQ0hFUiwKLSsg ICAgICAgIEVNT0pJX1RZUElORywKLSsgICAgfQotKwotKyAgICBwdWJsaWMgY2xhc3MgS2V5Ymlu ZGluZyA6IEdMaWIuT2JqZWN0IHsKLSsgICAgICAgIHB1YmxpYyBLZXliaW5kaW5nKHVpbnQgICAg ICAgICAgICAga2V5c3ltLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVy VHlwZSBtb2RpZmllcnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAg ICAgIHJldmVyc2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudEZ1bmNUeXBl IGZ0eXBlKSB7Ci0rICAgICAgICAgICAgdGhpcy5rZXlzeW0gPSBrZXlzeW07Ci0rICAgICAgICAg ICAgdGhpcy5tb2RpZmllcnMgPSBtb2RpZmllcnM7Ci0rICAgICAgICAgICAgdGhpcy5yZXZlcnNl ID0gcmV2ZXJzZTsKLSsgICAgICAgICAgICB0aGlzLmZ0eXBlID0gZnR5cGU7Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICBwdWJsaWMgdWludCBrZXlzeW0geyBnZXQ7IHNldDsgfQotKyAgICAgICAg cHVibGljIEdkay5Nb2RpZmllclR5cGUgbW9kaWZpZXJzIHsgZ2V0OyBzZXQ7IH0KLSsgICAgICAg IHB1YmxpYyBib29sIHJldmVyc2UgeyBnZXQ7IHNldDsgfQotKyAgICAgICAgcHVibGljIEtleUV2 ZW50RnVuY1R5cGUgZnR5cGUgeyBnZXQ7IHNldDsgfQotKyAgICB9Ci0rCi0rICAgIHB1YmxpYyBk ZWxlZ2F0ZSB2b2lkIEtleWJpbmRpbmdGdW5jSGFuZGxlckZ1bmMoR2RrLkV2ZW50IGV2ZW50KTsK LSsKLSsgICAgcHVibGljIHN0YXRpYyB2b2lkCi0rICAgIGtleWJpbmRpbmdfbWFuYWdlcl9iaW5k KEtleWJpbmRpbmdNYW5hZ2VyICAgICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZiBHTGliLkxpc3Q8S2V5YmluZGluZz4gICBrZXliaW5k aW5ncywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nPyAgICAgICAgICAgICAg ICAgICAgIGFjY2VsZXJhdG9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVu dEZ1bmNUeXBlICAgICAgICAgICAgZnR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IEtleWJpbmRpbmdNYW5hZ2VyLktleWJpbmRpbmdIYW5kbGVyRnVuYwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9ub3JtYWws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleWJpbmRpbmdNYW5hZ2VyLktleWJpbmRp bmdIYW5kbGVyRnVuYz8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhhbmRsZXJfcmV2ZXJzZSkgewotKyAgICAgICAgdWludCBzd2l0Y2hf a2V5c3ltID0gMDsKLSsgICAgICAgIEdkay5Nb2RpZmllclR5cGUgc3dpdGNoX21vZGlmaWVycyA9 IDA7Ci0rICAgICAgICBHZGsuTW9kaWZpZXJUeXBlIHJldmVyc2VfbW9kaWZpZXIgPSBHZGsuTW9k aWZpZXJUeXBlLlNISUZUX01BU0s7Ci0rICAgICAgICBLZXliaW5kaW5nIGtleWJpbmRpbmc7Ci0r Ci0rICAgICAgICBHdGsuYWNjZWxlcmF0b3JfcGFyc2UoYWNjZWxlcmF0b3IsCi0rICAgICAgICAg ICAgICAgIG91dCBzd2l0Y2hfa2V5c3ltLCBvdXQgc3dpdGNoX21vZGlmaWVycyk7Ci0rCi0rICAg ICAgICAvLyBNYXAgdmlydHVhbCBtb2RpZmllcnMgdG8gKGkuZS4gTW9kMiwgTW9kMywgLi4uKQot KyAgICAgICAgY29uc3QgR2RrLk1vZGlmaWVyVHlwZSBWSVJUVUFMX01PRElGSUVSUyA9ICgKLSsg ICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5TVVBFUl9NQVNLIHwKLSsgICAgICAgICAg ICAgICAgR2RrLk1vZGlmaWVyVHlwZS5IWVBFUl9NQVNLIHwKLSsgICAgICAgICAgICAgICAgR2Rr Lk1vZGlmaWVyVHlwZS5NRVRBX01BU0spOwotKyAgICAgICAgaWYgKChzd2l0Y2hfbW9kaWZpZXJz ICYgVklSVFVBTF9NT0RJRklFUlMpICE9IDApIHsKLSsgICAgICAgIC8vIHdvcmthcm91bmQgYSBi dWcgaW4gZ2RrIHZhcGkgdmFsYSA+IDAuMTgKLSsgICAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEu Z25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NTkKLSsjaWYgVkFMQV8wXzE4Ci0rICAgICAg ICAgICAgR2RrLktleW1hcC5nZXRfZGVmYXVsdCgpLm1hcF92aXJ0dWFsX21vZGlmaWVycygKLSsg ICAgICAgICAgICAgICAgICAgIHJlZiBzd2l0Y2hfbW9kaWZpZXJzKTsKLSsjZWxzZQotKyAgICAg ICAgICAgIGlmICgoc3dpdGNoX21vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUuU1VQRVJfTUFT SykgIT0gMCkKLSsgICAgICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycyB8PSBHZGsuTW9kaWZp ZXJUeXBlLk1PRDRfTUFTSzsKLSsgICAgICAgICAgICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiBH ZGsuTW9kaWZpZXJUeXBlLkhZUEVSX01BU0spICE9IDApCi0rICAgICAgICAgICAgICAgIHN3aXRj aF9tb2RpZmllcnMgfD0gR2RrLk1vZGlmaWVyVHlwZS5NT0Q0X01BU0s7Ci0rI2VuZGlmCi0rICAg ICAgICAgICAgc3dpdGNoX21vZGlmaWVycyAmPSB+VklSVFVBTF9NT0RJRklFUlM7Ci0rICAgICAg ICB9Ci0rCi0rICAgICAgICBpZiAoc3dpdGNoX2tleXN5bSA9PSAwICYmIHN3aXRjaF9tb2RpZmll cnMgPT0gMCkgewotKyAgICAgICAgICAgIHdhcm5pbmcoIlBhcnNlIGFjY2VsZXJhdG9yICclcycg ZmFpbGVkISIsIGFjY2VsZXJhdG9yKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICBrZXliaW5kaW5nID0gbmV3IEtleWJpbmRpbmcoc3dpdGNoX2tleXN5bSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfbW9kaWZpZXJzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZ0eXBlKTsKLSsgICAgICAgIGtleWJpbmRpbmdzLmFw cGVuZChrZXliaW5kaW5nKTsKLSsKLSsgICAgICAgIGtleWJpbmRpbmdfbWFuYWdlci5iaW5kKHN3 aXRjaF9rZXlzeW0sIHN3aXRjaF9tb2RpZmllcnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYW5kbGVyX25vcm1hbCk7Ci0rICAgICAgICBpZiAoZnR5cGUgPT0gS2V5RXZlbnRG dW5jVHlwZS5FTU9KSV9UWVBJTkcpIHsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICAvLyBhY2NlbGVyYXRvciBhbHJlYWR5IGhhcyBTaGlmdCBtYXNrCi0rICAg ICAgICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiByZXZlcnNlX21vZGlmaWVyKSAhPSAwKSB7Ci0r ICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKwotKyAgICAgICAgc3dpdGNoX21vZGlm aWVycyB8PSByZXZlcnNlX21vZGlmaWVyOwotKwotKyAgICAgICAga2V5YmluZGluZyA9IG5ldyBL ZXliaW5kaW5nKHN3aXRjaF9rZXlzeW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3dpdGNoX21vZGlmaWVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cnVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0eXBlKTsK LSsgICAgICAgIGtleWJpbmRpbmdzLmFwcGVuZChrZXliaW5kaW5nKTsKLSsKLSsgICAgICAgIGlm IChmdHlwZSA9PSBLZXlFdmVudEZ1bmNUeXBlLklNRV9TV0lUQ0hFUikgewotKyAgICAgICAgICAg IGtleWJpbmRpbmdfbWFuYWdlci5iaW5kKHN3aXRjaF9rZXlzeW0sIHN3aXRjaF9tb2RpZmllcnMs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9yZXZlcnNlKTsK LSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgICBwdWJsaWMgc3Rh dGljIHZvaWQKLSsgICAgdW5iaW5kX3N3aXRjaF9zaG9ydGN1dChLZXlFdmVudEZ1bmNUeXBlICAg ICAgZnR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5MaXN0PEtleWJpbmRp bmc+IGtleWJpbmRpbmdzKSB7Ci0rICAgICAgICB2YXIga2V5YmluZGluZ19tYW5hZ2VyID0gS2V5 YmluZGluZ01hbmFnZXIuZ2V0X2luc3RhbmNlKCk7Ci0rCi0rICAgICAgICB3aGlsZSAoa2V5Ymlu ZGluZ3MgIT0gbnVsbCkgewotKyAgICAgICAgICAgIEtleWJpbmRpbmcga2V5YmluZGluZyA9IGtl eWJpbmRpbmdzLmRhdGE7Ci0rCi0rICAgICAgICAgICAgaWYgKGZ0eXBlID09IEtleUV2ZW50RnVu Y1R5cGUuQU5ZIHx8Ci0rICAgICAgICAgICAgICAgIGZ0eXBlID09IGtleWJpbmRpbmcuZnR5cGUp IHsKLSsgICAgICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2VyLnVuYmluZChrZXliaW5kaW5n LmtleXN5bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXli aW5kaW5nLm1vZGlmaWVycyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGtleWJpbmRp bmdzID0ga2V5YmluZGluZ3MubmV4dDsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBwdWJs aWMgc3RhdGljIHZvaWQKLSsgICAgc2V0X2N1c3RvbV9mb250KEdMaWIuU2V0dGluZ3M/ICAgICAg IHNldHRpbmdzX3BhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgR0xpYi5TZXR0aW5ncz8gICAg ICAgc2V0dGluZ3NfZW1vamksCi0rICAgICAgICAgICAgICAgICAgICByZWYgR3RrLkNzc1Byb3Zp ZGVyPyBjc3NfcHJvdmlkZXIpIHsKLSsgICAgICAgIEdkay5EaXNwbGF5IGRpc3BsYXkgPSBHZGsu RGlzcGxheS5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSAoZGlz cGxheSAhPSBudWxsKSA/Ci0rICAgICAgICAgICAgICAgIGRpc3BsYXkuZ2V0X2RlZmF1bHRfc2Ny ZWVuKCkgOiBudWxsOwotKwotKyAgICAgICAgaWYgKHNjcmVlbiA9PSBudWxsKSB7Ci0rICAgICAg ICAgICAgd2FybmluZygiQ291bGQgbm90IG9wZW4gZGlzcGxheS4iKTsKLSsgICAgICAgICAgICBy ZXR1cm47Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoc2V0dGluZ3NfZW1vamkgIT0gbnVs bCkgewotKyAgICAgICAgICAgIHN0cmluZyBlbW9qaV9mb250ID0gc2V0dGluZ3NfZW1vamkuZ2V0 X3N0cmluZygiZm9udCIpOwotKyAgICAgICAgICAgIGlmIChlbW9qaV9mb250ID09IG51bGwpIHsK LSsgICAgICAgICAgICAgICAgd2FybmluZygiTm8gY29uZmlnIGVtb2ppOmZvbnQuIik7Ci0rICAg ICAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgSUJ1c0Vt b2ppZXIuc2V0X2Vtb2ppX2ZvbnQoZW1vamlfZm9udCk7Ci0rICAgICAgICB9Ci0rCi0rICAgICAg ICBpZiAoc2V0dGluZ3NfcGFuZWwgPT0gbnVsbCkKLSsgICAgICAgICAgICByZXR1cm47Ci0rCi0r ICAgICAgICBib29sIHVzZV9jdXN0b21fZm9udCA9IHNldHRpbmdzX3BhbmVsLmdldF9ib29sZWFu KCJ1c2UtY3VzdG9tLWZvbnQiKTsKLSsKLSsgICAgICAgIGlmIChjc3NfcHJvdmlkZXIgIT0gbnVs bCkgewotKyAgICAgICAgICAgIEd0ay5TdHlsZUNvbnRleHQucmVtb3ZlX3Byb3ZpZGVyX2Zvcl9z Y3JlZW4oc2NyZWVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3NzX3Byb3ZpZGVyKTsKLSsgICAgICAgICAgICBjc3NfcHJvdmlkZXIg PSBudWxsOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKHVzZV9jdXN0b21fZm9udCA9PSBm YWxzZSkgewotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIHN0 cmluZyBjdXN0b21fZm9udCA9IHNldHRpbmdzX3BhbmVsLmdldF9zdHJpbmcoImN1c3RvbS1mb250 Iik7Ci0rICAgICAgICBpZiAoY3VzdG9tX2ZvbnQgPT0gbnVsbCkgewotKyAgICAgICAgICAgIHdh cm5pbmcoIk5vIGNvbmZpZyBwYW5lbDpjdXN0b20tZm9udC4iKTsKLSsgICAgICAgICAgICByZXR1 cm47Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBQYW5nby5Gb250RGVzY3JpcHRpb24gZm9udF9k ZXNjID0KLSsgICAgICAgICAgICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uLmZyb21fc3RyaW5n KGN1c3RvbV9mb250KTsKLSsgICAgICAgIHN0cmluZyBmb250X2ZhbWlseSA9IGZvbnRfZGVzYy5n ZXRfZmFtaWx5KCk7Ci0rICAgICAgICBpbnQgZm9udF9zaXplID0gZm9udF9kZXNjLmdldF9zaXpl KCkgLyBQYW5nby5TQ0FMRTsKLSsgICAgICAgIHN0cmluZyBkYXRhOwotKwotKyAgICAgICAgaWYg KEd0ay5NQUpPUl9WRVJTSU9OIDwgMyB8fAotKyAgICAgICAgICAgIChHdGsuTUFKT1JfVkVSU0lP TiA9PSAzICYmIEd0ay5NSU5PUl9WRVJTSU9OIDwgMjApKSB7Ci0rICAgICAgICAgICAgZGF0YSA9 ICJHdGtMYWJlbCB7IGZvbnQ6ICVzOyB9Ii5wcmludGYoY3VzdG9tX2ZvbnQpOwotKyAgICAgICAg fSBlbHNlIHsKLSsgICAgICAgICAgICBkYXRhID0gImxhYmVsIHsgZm9udC1mYW1pbHk6ICVzOyBm b250LXNpemU6ICVkcHQ7IH0iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByaW50Zihm b250X2ZhbWlseSwgZm9udF9zaXplKTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGNzc19wcm92 aWRlciA9IG5ldyBHdGsuQ3NzUHJvdmlkZXIoKTsKLSsKLSsgICAgICAgIHRyeSB7Ci0rICAgICAg ICAgICAgY3NzX3Byb3ZpZGVyLmxvYWRfZnJvbV9kYXRhKGRhdGEsIC0xKTsKLSsgICAgICAgIH0g Y2F0Y2ggKEdMaWIuRXJyb3IgZSkgewotKyAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCBjc3Nf cHJvdmlkZXJfZnJvbV9kYXRhOiAlczogJXMiLCBjdXN0b21fZm9udCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXNzYWdl KTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBHdGsuU3R5 bGVDb250ZXh0LmFkZF9wcm92aWRlcl9mb3Jfc2NyZWVuKAotKyAgICAgICAgICAgICAgICBzY3Jl ZW4sCi0rICAgICAgICAgICAgICAgIGNzc19wcm92aWRlciwKLSsgICAgICAgICAgICAgICAgR3Rr LlNUWUxFX1BST1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OKTsKLSsgICAgfQotK30KLWRpZmYg LS1naXQgYS91aS9ndGszL2NhbmRpZGF0ZWFyZWEudmFsYSBiL3VpL2d0azMvY2FuZGlkYXRlYXJl YS52YWxhCi1pbmRleCBlMTYyYTk2MC4uZjU5MGNmM2EgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2Nh bmRpZGF0ZWFyZWEudmFsYQotKysrIGIvdWkvZ3RrMy9jYW5kaWRhdGVhcmVhLnZhbGEKLUBAIC0y MSwxMDggKzIxLDYgQEAKLSAgKiBVU0EKLSAgKi8KLSAKLS1jbGFzcyBUaGVtZWRSR0JBIHsKLS0g ICAgcHVibGljIEdkay5SR0JBICpub3JtYWxfZmcgeyBnZXQ7IHNldDsgfQotLSAgICBwdWJsaWMg R2RrLlJHQkEgKm5vcm1hbF9iZyB7IGdldDsgc2V0OyB9Ci0tICAgIHB1YmxpYyBHZGsuUkdCQSAq c2VsZWN0ZWRfZmcgeyBnZXQ7IHNldDsgfQotLSAgICBwdWJsaWMgR2RrLlJHQkEgKnNlbGVjdGVk X2JnIHsgZ2V0OyBzZXQ7IH0KLS0KLS0gICAgcHJpdmF0ZSBHdGsuU3R5bGVDb250ZXh0IG1fc3R5 bGVfY29udGV4dDsKLS0KLS0gICAgcHVibGljIFRoZW1lZFJHQkEoR3RrLldpZGdldCB3aWRnZXQp IHsKLS0gICAgICAgIHRoaXMubm9ybWFsX2ZnID0gbnVsbDsKLS0gICAgICAgIHRoaXMubm9ybWFs X2JnID0gbnVsbDsKLS0gICAgICAgIHRoaXMuc2VsZWN0ZWRfZmcgPSBudWxsOwotLSAgICAgICAg dGhpcy5zZWxlY3RlZF9iZyA9IG51bGw7Ci0tCi0tICAgICAgICAvKiBVc2UgdGhlIGNvbG9yIG9m IEd0ay5UZXh0VmlldyBpbnN0ZWFkIG9mIEd0ay5MYWJlbAotLSAgICAgICAgICogYmVjYXVzZSB0 aGUgc2VsZWN0ZWQgbGFiZWwgImNvbG9yIiBpcyBub3QgY29uZmlndXJlZAotLSAgICAgICAgICog aW4gIkFkd2FpdGEiIHRoZW1lIGFuZCB0aGUgc2VsZWN0ZWQgbGFiZWwgImJhY2tncm91bmQtY29s b3IiCi0tICAgICAgICAgKiBpcyBub3QgY29uZmlndXJlZCBpbiAiTWFpYSIgdGhlbWUuCi0tICAg ICAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8xODcxCi0tICAgICAg ICAgKi8KLS0gICAgICAgIEd0ay5XaWRnZXRQYXRoIHdpZGdldF9wYXRoID0gbmV3IEd0ay5XaWRn ZXRQYXRoKCk7Ci0tICAgICAgICB3aWRnZXRfcGF0aC5hcHBlbmRfdHlwZSh0eXBlb2YoR3RrLlRl eHRWaWV3KSk7Ci0tICAgICAgICBtX3N0eWxlX2NvbnRleHQgPSBuZXcgR3RrLlN0eWxlQ29udGV4 dCgpOwotLSAgICAgICAgbV9zdHlsZV9jb250ZXh0LnNldF9wYXRoKHdpZGdldF9wYXRoKTsKLS0g ICAgICAgIG1fc3R5bGVfY29udGV4dC5hZGRfY2xhc3MoR3RrLlNUWUxFX0NMQVNTX1ZJRVcpOwot LQotLSAgICAgICAgLyogIi1ndGstc2Vjb25kYXJ5LWNhcmV0LWNvbG9yIiB2YWx1ZSBpcyBkaWZm ZXJlbnQKLS0gICAgICAgICAqIGlmIHRoZSBwYXJlbnQgd2lkZ2V0IGlzIHNldCBpbiAiTWVudGEi IHRoZW1lLgotLSAgICAgICAgICovCi0tICAgICAgICBtX3N0eWxlX2NvbnRleHQuc2V0X3BhcmVu dCh3aWRnZXQuZ2V0X3N0eWxlX2NvbnRleHQoKSk7Ci0tCi0tICAgICAgICBnZXRfcmdiYSgpOwot LQotLSAgICAgICAgbV9zdHlsZV9jb250ZXh0LmNoYW5nZWQuY29ubmVjdCgoKSA9PiB7IGdldF9y Z2JhKCk7IH0pOwotLSAgICB9Ci0tCi0tICAgIH5UaGVtZWRSR0JBKCkgewotLSAgICAgICAgcmVz ZXRfcmdiYSgpOwotLSAgICB9Ci0tCi0tICAgIHByaXZhdGUgdm9pZCByZXNldF9yZ2JhKCkgewot LSAgICAgICAgaWYgKHRoaXMubm9ybWFsX2ZnICE9IG51bGwpIHsKLS0gICAgICAgICAgICB0aGlz Lm5vcm1hbF9mZy5mcmVlKCk7Ci0tICAgICAgICAgICAgdGhpcy5ub3JtYWxfZmcgPSBudWxsOwot LSAgICAgICAgfQotLSAgICAgICAgaWYgKHRoaXMubm9ybWFsX2JnICE9IG51bGwpIHsKLS0gICAg ICAgICAgICB0aGlzLm5vcm1hbF9iZy5mcmVlKCk7Ci0tICAgICAgICAgICAgdGhpcy5ub3JtYWxf YmcgPSBudWxsOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRfZmcgIT0g bnVsbCkgewotLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRfZmcuZnJlZSgpOwotLSAgICAgICAg ICAgIHRoaXMuc2VsZWN0ZWRfZmcgPSBudWxsOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKHRo aXMuc2VsZWN0ZWRfYmcgIT0gbnVsbCkgewotLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRfYmcu ZnJlZSgpOwotLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRfYmcgPSBudWxsOwotLSAgICAgICAg fQotLSAgICB9Ci0tCi0tICAgIHByaXZhdGUgdm9pZCBnZXRfcmdiYSgpIHsKLS0gICAgICAgIHJl c2V0X3JnYmEoKTsKLS0gICAgICAgIEdkay5SR0JBICpub3JtYWxfZmcgPSBudWxsOwotLSAgICAg ICAgR2RrLlJHQkEgKm5vcm1hbF9iZyA9IG51bGw7Ci0tICAgICAgICBHZGsuUkdCQSAqc2VsZWN0 ZWRfZmcgPSBudWxsOwotLSAgICAgICAgR2RrLlJHQkEgKnNlbGVjdGVkX2JnID0gbnVsbDsKLS0g ICAgICAgIG1fc3R5bGVfY29udGV4dC5nZXQoR3RrLlN0YXRlRmxhZ3MuTk9STUFMLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXQgbm9ybWFsX2ZnKTsKLS0gICAgICAgIG1fc3R5bGVfY29udGV4dC5nZXQoR3RrLlN0 YXRlRmxhZ3MuU0VMRUNURUQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBzZWxlY3RlZF9mZyk7Ci0tCi0tICAg ICAgICBzdHJpbmcgYmdfcHJvcCA9ICJiYWNrZ3JvdW5kLWNvbG9yIjsKLS0gICAgICAgIG1fc3R5 bGVfY29udGV4dC5nZXQoR3RrLlN0YXRlRmxhZ3MuTk9STUFMLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiZ19wcm9wLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbm9y bWFsX2JnKTsKLS0gICAgICAgIG1fc3R5bGVfY29udGV4dC5nZXQoR3RrLlN0YXRlRmxhZ3MuU0VM RUNURUQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnX3Byb3AsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG91dCBzZWxlY3RlZF9iZyk7Ci0tICAgICAgICBpZiAobm9ybWFs X2JnLnJlZCAgID09IHNlbGVjdGVkX2JnLnJlZCAmJgotLSAgICAgICAgICAgIG5vcm1hbF9iZy5n cmVlbiA9PSBzZWxlY3RlZF9iZy5ncmVlbiAmJgotLSAgICAgICAgICAgIG5vcm1hbF9iZy5ibHVl ICA9PSBzZWxlY3RlZF9iZy5ibHVlICYmCi0tICAgICAgICAgICAgbm9ybWFsX2JnLmFscGhhID09 IHNlbGVjdGVkX2JnLmFscGhhKSB7Ci0tICAgICAgICAgICAgbm9ybWFsX2JnLmZyZWUoKTsKLS0g ICAgICAgICAgICBub3JtYWxfYmcgPSBudWxsOwotLSAgICAgICAgICAgIG5vcm1hbF9iZy5mcmVl KCk7Ci0tICAgICAgICAgICAgbm9ybWFsX2JnID0gbnVsbDsKLS0gICAgICAgICAgICBiZ19wcm9w ID0gIi1ndGstc2Vjb25kYXJ5LWNhcmV0LWNvbG9yIjsKLS0gICAgICAgICAgICBtX3N0eWxlX2Nv bnRleHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLk5PUk1BTCwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJnX3Byb3AsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg bm9ybWFsX2JnKTsKLS0gICAgICAgICAgICBtX3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0ZUZs YWdzLlNFTEVDVEVELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdfcHJvcCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBzZWxlY3RlZF9iZyk7Ci0tICAg ICAgICB9Ci0tICAgICAgICB0aGlzLm5vcm1hbF9mZyAgID0gbm9ybWFsX2ZnOwotLSAgICAgICAg dGhpcy5ub3JtYWxfYmcgICA9IG5vcm1hbF9iZzsKLS0gICAgICAgIHRoaXMuc2VsZWN0ZWRfZmcg PSBzZWxlY3RlZF9mZzsKLS0gICAgICAgIHRoaXMuc2VsZWN0ZWRfYmcgPSBzZWxlY3RlZF9iZzsK LS0gICAgfQotLX0KLS0KLSBjbGFzcyBDYW5kaWRhdGVBcmVhIDogR3RrLkJveCB7Ci0gICAgIHBy aXZhdGUgYm9vbCBtX3ZlcnRpY2FsOwotICAgICBwcml2YXRlIEd0ay5MYWJlbFtdIG1fbGFiZWxz OwotZGlmZiAtLWdpdCBhL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEgYi91aS9ndGszL2V4dGVuc2lv bi52YWxhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLmExNzAyODBiCi0t LS0gL2Rldi9udWxsCi0rKysgYi91aS9ndGszL2V4dGVuc2lvbi52YWxhCi1AQCAtMCwwICsxLDEy NCBAQAotKy8qIHZpbTpzZXQgZXQgc3RzPTQgc3c9NDoKLSsgKgotKyAqIGlidXMgLSBUaGUgSW5w dXQgQnVzCi0rICoKLSsgKiBDb3B5cmlnaHQoYykgMjAxOCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1 YW5nQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQoYykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0r ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0r ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgot KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQotKyAqIFVT QQotKyAqLwotKwotK2NsYXNzIEV4dGVuc2lvbkd0ayB7Ci0rICAgIHByaXZhdGUgSUJ1cy5CdXMg bV9idXM7Ci0rICAgIHByaXZhdGUgUGFuZWxCaW5kaW5nIG1fcGFuZWw7Ci0rCi0rICAgIHB1Ymxp YyBFeHRlbnNpb25HdGsoc3RyaW5nW10gYXJndikgewotKyAgICAgICAgR0xpYi5JbnRsLmJpbmR0 ZXh0ZG9tYWluKENvbmZpZy5HRVRURVhUX1BBQ0tBR0UsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29uZmlnLkdMSUJfTE9DQUxFX0RJUik7Ci0rICAgICAgICBHTGliLkludGwu YmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoQ29uZmlnLkdFVFRFWFRfUEFDS0FHRSwgIlVURi04Iik7 Ci0rICAgICAgICBJQnVzLmluaXQoKTsKLSsgICAgICAgIEd0ay5pbml0KHJlZiBhcmd2KTsKLSsK LSsgICAgICAgIG1fYnVzID0gbmV3IElCdXMuQnVzKCk7Ci0rCi0rICAgICAgICBtX2J1cy5jb25u ZWN0ZWQuY29ubmVjdChidXNfY29ubmVjdGVkKTsKLSsgICAgICAgIG1fYnVzLmRpc2Nvbm5lY3Rl ZC5jb25uZWN0KGJ1c19kaXNjb25uZWN0ZWQpOwotKwotKyAgICAgICAgaWYgKG1fYnVzLmlzX2Nv bm5lY3RlZCgpKSB7Ci0rICAgICAgICAgICAgaW5pdCgpOwotKyAgICAgICAgfQotKyAgICB9Ci0r Ci0rICAgIHByaXZhdGUgdm9pZCBpbml0KCkgewotKyAgICAgICAgREJ1c0Nvbm5lY3Rpb24gY29u bmVjdGlvbiA9IG1fYnVzLmdldF9jb25uZWN0aW9uKCk7Ci0rICAgICAgICBjb25uZWN0aW9uLnNp Z25hbF9zdWJzY3JpYmUoIm9yZy5mcmVlZGVza3RvcC5EQnVzIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lQWNxdWlyZWQiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL0RCdXMiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXMuU0VSVklDRV9QQU5FTF9FWFRFTlNJT04s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJ1c1NpZ25hbEZsYWdzLk5P TkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX25hbWVfYWNxdWly ZWRfY2IpOwotKyAgICAgICAgY29ubmVjdGlvbi5zaWduYWxfc3Vic2NyaWJlKCJvcmcuZnJlZWRl c2t0b3AuREJ1cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5m cmVlZGVza3RvcC5EQnVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi TmFtZUxvc3QiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2Zy ZWVkZXNrdG9wL0RCdXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC dXMuU0VSVklDRV9QQU5FTF9FWFRFTlNJT04sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREJ1c1NpZ25hbEZsYWdzLk5PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnVzX25hbWVfbG9zdF9jYik7Ci0rICAgICAgICB2YXIgZmxhZ3MgPQotKyAg ICAgICAgICAgICAgICBJQnVzLkJ1c05hbWVGbGFnLkFMTE9XX1JFUExBQ0VNRU5UIHwKLSsgICAg ICAgICAgICAgICAgSUJ1cy5CdXNOYW1lRmxhZy5SRVBMQUNFX0VYSVNUSU5HOwotKyAgICAgICAg bV9idXMucmVxdWVzdF9uYW1lKElCdXMuU0VSVklDRV9QQU5FTF9FWFRFTlNJT04sIGZsYWdzKTsK LSsgICAgfQotKwotKyAgICBwdWJsaWMgaW50IHJ1bigpIHsKLSsgICAgICAgIEd0ay5tYWluKCk7 Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgYnVzX25h bWVfYWNxdWlyZWRfY2IoREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBzZW5kZXJfbmFtZSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBvYmplY3RfcGF0aCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBpbnRlcmZhY2VfbmFtZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBzaWduYWxfbmFtZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhbnQgcGFyYW1ldGVy cykgewotKyAgICAgICAgZGVidWcoInNpZ25hbF9uYW1lID0gJXMiLCBzaWduYWxfbmFtZSk7Ci0r ICAgICAgICBtX3BhbmVsID0gbmV3IFBhbmVsQmluZGluZyhtX2J1cyk7Ci0rICAgICAgICBtX3Bh bmVsLmxvYWRfc2V0dGluZ3MoKTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgYnVzX25h bWVfbG9zdF9jYihEQnVzQ29ubmVjdGlvbiBjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJpbmcgc2VuZGVyX25hbWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmluZyBvYmplY3RfcGF0aCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyaW5nIGludGVyZmFjZV9uYW1lLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJpbmcgc2lnbmFsX25hbWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZhcmlhbnQgcGFyYW1ldGVycykgewotKyAgICAgICAgLy8gIkRlc3Ry b3kiIGRidXMgbWV0aG9kIHdhcyBjYWxsZWQgYmVmb3JlIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVk LgotKyAgICAgICAgLy8gIkRlc3Ryb3kiIGRidXMgbWV0aG9kIC0+IGlidXNfc2VydmljZV9kZXN0 cm95KCkKLSsgICAgICAgIC8vIC0+IGdfZGJ1c19jb25uZWN0aW9uX3VucmVnaXN0ZXJfb2JqZWN0 KCkKLSsgICAgICAgIC8vIC0+IGdfb2JqZWN0X3VucmVmKG1fcGFuZWwpIHdpbGwgYmUgY2FsbGVk IGxhdGVyIHdpdGggYW4gaWRsZSBtZXRob2QsCi0rICAgICAgICAvLyB3aGljaCB3YXMgYXNzaWdu ZWQgaW4gdGhlIGFyZ3VtZW50cyBvZgotKyAgICAgICAgLy8gZ19kYnVzX2Nvbm5lY3Rpb25fcmVn aXN0ZXJfb2JqZWN0KCkKLSsgICAgICAgIGRlYnVnKCJzaWduYWxfbmFtZSA9ICVzIiwgc2lnbmFs X25hbWUpOwotKwotKyAgICAgICAgLy8gdW5yZWYgbV9wYW5lbAotKyAgICAgICAgbV9wYW5lbC5k aXNjb25uZWN0X3NpZ25hbHMoKTsKLSsgICAgICAgIG1fcGFuZWwgPSBudWxsOwotKyAgICB9Ci0r Ci0rICAgIHByaXZhdGUgdm9pZCBidXNfZGlzY29ubmVjdGVkKElCdXMuQnVzIGJ1cykgewotKyAg ICAgICAgZGVidWcoImNvbm5lY3Rpb24gaXMgbG9zdC4iKTsKLSsgICAgICAgIEd0ay5tYWluX3F1 aXQoKTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgYnVzX2Nvbm5lY3RlZChJQnVzLkJ1 cyBidXMpIHsKLSsgICAgICAgIGluaXQoKTsKLSsgICAgfQotKwotKyAgICBwdWJsaWMgc3RhdGlj IHZvaWQgbWFpbihzdHJpbmdbXSBhcmd2KSB7Ci0rICAgICAgICAvLyBodHRwczovL2J1Z3ppbGxh LnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEyMjY0NjUjYzIwCi0rICAgICAgICAvLyBJbiAv ZXRjL3hkZy9wbGFzbWEtd29ya3NwYWNlL2Vudi9ndGszX3Njcm9sbGluZy5zaAotKyAgICAgICAg Ly8gUGxhc21hIGRlc2tvcCBzZXRzIHRoaXMgdmFyaWFibGUgYW5kIHByZXZlbnRzIFN1cGVyLXNw YWNlLAotKyAgICAgICAgLy8gYW5kIEN0cmwtU2hpZnQtZSB3aGVuIGlidXMtdWktZ3RrMyBydW5z IGFmdGVyIHRoZQotKyAgICAgICAgLy8gZGVza3RvcCBpcyBsYXVuY2hlZC4KLSsgICAgICAgIEdM aWIuRW52aXJvbm1lbnQudW5zZXRfdmFyaWFibGUoIkdES19DT1JFX0RFVklDRV9FVkVOVFMiKTsK LSsgICAgICAgIC8vIGZvciBHZGsuWDExLmdldF9kZWZhdWx0X3hkaXNwbGF5KCkKLSsgICAgICAg IEdkay5zZXRfYWxsb3dlZF9iYWNrZW5kcygieDExIik7Ci0rCi0rICAgICAgICBFeHRlbnNpb25H dGsgZXh0ZW5zaW9uID0gbmV3IEV4dGVuc2lvbkd0ayhhcmd2KTsKLSsgICAgICAgIGV4dGVuc2lv bi5ydW4oKTsKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS91aS9ndGszL2d0a2V4dGVuc2lvbi54 bWwuaW4gYi91aS9ndGszL2d0a2V4dGVuc2lvbi54bWwuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwMC4uYjgxNTdjOTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VpL2d0azMv Z3RrZXh0ZW5zaW9uLnhtbC5pbgotQEAgLTAsMCArMSwxMiBAQAotKzw/eG1sIHZlcnNpb249IjEu MCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci0rPCEtLSBmaWxlbmFtZTogZ3RrZXh0ZW5zaW9uLnhtbCAt LT4KLSs8Y29tcG9uZW50PgotKwk8bmFtZT5vcmcuZnJlZWRlc2t0b3AuSUJ1cy5QYW5lbC5FeHRl bnNpb248L25hbWU+Ci0rCTxkZXNjcmlwdGlvbj5HdGsgUGFuZWwgRXh0ZW5zaW9uIENvbXBvbmVu dDwvZGVzY3JpcHRpb24+Ci0rCTxleGVjPkBsaWJleGVjZGlyQC9pYnVzLWV4dGVuc2lvbi1ndGsz PC9leGVjPgotKwk8dmVyc2lvbj5AVkVSU0lPTkA8L3ZlcnNpb24+Ci0rCTxhdXRob3I+VGFrYW8g RnVqaXdhcmEgJmx0O3Rha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20mZ3Q7PC9hdXRob3I+Ci0rCTxs aWNlbnNlPkdQTDwvbGljZW5zZT4KLSsJPGhvbWVwYWdlPmh0dHBzOi8vZ2l0aHViLmNvbS9pYnVz L2lidXMvd2lraTwvaG9tZXBhZ2U+Ci0rCTx0ZXh0ZG9tYWluPmlidXM8L3RleHRkb21haW4+Ci0r PC9jb21wb25lbnQ+Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pY29ud2lkZ2V0LnZhbGEgYi91aS9n dGszL2ljb253aWRnZXQudmFsYQotaW5kZXggZDMyMjY1MGMuLjM2NjQzYzc0IDEwMDY0NAotLS0t IGEvdWkvZ3RrMy9pY29ud2lkZ2V0LnZhbGEKLSsrKyBiL3VpL2d0azMvaWNvbndpZGdldC52YWxh Ci1AQCAtMyw2ICszLDcgQEAKLSAgKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqCi0gICogQ29w eXJpZ2h0KGMpIDIwMTEtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4K LSsgKiBDb3B5cmlnaHQoYykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMjAsNiArMjEsMTA4IEBACi0gICog VVNBCi0gICovCi0gCi0rY2xhc3MgVGhlbWVkUkdCQSB7Ci0rICAgIHB1YmxpYyBHZGsuUkdCQSAq bm9ybWFsX2ZnIHsgZ2V0OyBzZXQ7IH0KLSsgICAgcHVibGljIEdkay5SR0JBICpub3JtYWxfYmcg eyBnZXQ7IHNldDsgfQotKyAgICBwdWJsaWMgR2RrLlJHQkEgKnNlbGVjdGVkX2ZnIHsgZ2V0OyBz ZXQ7IH0KLSsgICAgcHVibGljIEdkay5SR0JBICpzZWxlY3RlZF9iZyB7IGdldDsgc2V0OyB9Ci0r Ci0rICAgIHByaXZhdGUgR3RrLlN0eWxlQ29udGV4dCBtX3N0eWxlX2NvbnRleHQ7Ci0rCi0rICAg IHB1YmxpYyBUaGVtZWRSR0JBKEd0ay5XaWRnZXQgd2lkZ2V0KSB7Ci0rICAgICAgICB0aGlzLm5v cm1hbF9mZyA9IG51bGw7Ci0rICAgICAgICB0aGlzLm5vcm1hbF9iZyA9IG51bGw7Ci0rICAgICAg ICB0aGlzLnNlbGVjdGVkX2ZnID0gbnVsbDsKLSsgICAgICAgIHRoaXMuc2VsZWN0ZWRfYmcgPSBu dWxsOwotKwotKyAgICAgICAgLyogVXNlIHRoZSBjb2xvciBvZiBHdGsuVGV4dFZpZXcgaW5zdGVh ZCBvZiBHdGsuTGFiZWwKLSsgICAgICAgICAqIGJlY2F1c2UgdGhlIHNlbGVjdGVkIGxhYmVsICJj b2xvciIgaXMgbm90IGNvbmZpZ3VyZWQKLSsgICAgICAgICAqIGluICJBZHdhaXRhIiB0aGVtZSBh bmQgdGhlIHNlbGVjdGVkIGxhYmVsICJiYWNrZ3JvdW5kLWNvbG9yIgotKyAgICAgICAgICogaXMg bm90IGNvbmZpZ3VyZWQgaW4gIk1haWEiIHRoZW1lLgotKyAgICAgICAgICogaHR0cHM6Ly9naXRo dWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMTg3MQotKyAgICAgICAgICovCi0rICAgICAgICBHdGsu V2lkZ2V0UGF0aCB3aWRnZXRfcGF0aCA9IG5ldyBHdGsuV2lkZ2V0UGF0aCgpOwotKyAgICAgICAg d2lkZ2V0X3BhdGguYXBwZW5kX3R5cGUodHlwZW9mKEd0ay5UZXh0VmlldykpOwotKyAgICAgICAg bV9zdHlsZV9jb250ZXh0ID0gbmV3IEd0ay5TdHlsZUNvbnRleHQoKTsKLSsgICAgICAgIG1fc3R5 bGVfY29udGV4dC5zZXRfcGF0aCh3aWRnZXRfcGF0aCk7Ci0rICAgICAgICBtX3N0eWxlX2NvbnRl eHQuYWRkX2NsYXNzKEd0ay5TVFlMRV9DTEFTU19WSUVXKTsKLSsKLSsgICAgICAgIC8qICItZ3Rr LXNlY29uZGFyeS1jYXJldC1jb2xvciIgdmFsdWUgaXMgZGlmZmVyZW50Ci0rICAgICAgICAgKiBp ZiB0aGUgcGFyZW50IHdpZGdldCBpcyBzZXQgaW4gIk1lbnRhIiB0aGVtZS4KLSsgICAgICAgICAq LwotKyAgICAgICAgbV9zdHlsZV9jb250ZXh0LnNldF9wYXJlbnQod2lkZ2V0LmdldF9zdHlsZV9j b250ZXh0KCkpOwotKwotKyAgICAgICAgZ2V0X3JnYmEoKTsKLSsKLSsgICAgICAgIG1fc3R5bGVf Y29udGV4dC5jaGFuZ2VkLmNvbm5lY3QoKCkgPT4geyBnZXRfcmdiYSgpOyB9KTsKLSsgICAgfQot KwotKyAgICB+VGhlbWVkUkdCQSgpIHsKLSsgICAgICAgIHJlc2V0X3JnYmEoKTsKLSsgICAgfQot KwotKyAgICBwcml2YXRlIHZvaWQgcmVzZXRfcmdiYSgpIHsKLSsgICAgICAgIGlmICh0aGlzLm5v cm1hbF9mZyAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgdGhpcy5ub3JtYWxfZmcuZnJlZSgpOwot KyAgICAgICAgICAgIHRoaXMubm9ybWFsX2ZnID0gbnVsbDsKLSsgICAgICAgIH0KLSsgICAgICAg IGlmICh0aGlzLm5vcm1hbF9iZyAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgdGhpcy5ub3JtYWxf YmcuZnJlZSgpOwotKyAgICAgICAgICAgIHRoaXMubm9ybWFsX2JnID0gbnVsbDsKLSsgICAgICAg IH0KLSsgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkX2ZnICE9IG51bGwpIHsKLSsgICAgICAgICAg ICB0aGlzLnNlbGVjdGVkX2ZnLmZyZWUoKTsKLSsgICAgICAgICAgICB0aGlzLnNlbGVjdGVkX2Zn ID0gbnVsbDsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkX2JnICE9IG51 bGwpIHsKLSsgICAgICAgICAgICB0aGlzLnNlbGVjdGVkX2JnLmZyZWUoKTsKLSsgICAgICAgICAg ICB0aGlzLnNlbGVjdGVkX2JnID0gbnVsbDsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBw cml2YXRlIHZvaWQgZ2V0X3JnYmEoKSB7Ci0rICAgICAgICByZXNldF9yZ2JhKCk7Ci0rICAgICAg ICBHZGsuUkdCQSAqbm9ybWFsX2ZnID0gbnVsbDsKLSsgICAgICAgIEdkay5SR0JBICpub3JtYWxf YmcgPSBudWxsOwotKyAgICAgICAgR2RrLlJHQkEgKnNlbGVjdGVkX2ZnID0gbnVsbDsKLSsgICAg ICAgIEdkay5SR0JBICpzZWxlY3RlZF9iZyA9IG51bGw7Ci0rICAgICAgICBtX3N0eWxlX2NvbnRl eHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLk5PUk1BTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImNvbG9yIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9mZyk7 Ci0rICAgICAgICBtX3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLlNFTEVDVEVELAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQgc2VsZWN0ZWRfZmcpOwotKwotKyAgICAgICAgc3RyaW5nIGJnX3Byb3Ag PSAiYmFja2dyb3VuZC1jb2xvciI7Ci0rICAgICAgICBtX3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5T dGF0ZUZsYWdzLk5PUk1BTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdfcHJvcCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9iZyk7Ci0rICAgICAgICBt X3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLlNFTEVDVEVELAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBiZ19wcm9wLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv dXQgc2VsZWN0ZWRfYmcpOwotKyAgICAgICAgaWYgKG5vcm1hbF9iZy5yZWQgICA9PSBzZWxlY3Rl ZF9iZy5yZWQgJiYKLSsgICAgICAgICAgICBub3JtYWxfYmcuZ3JlZW4gPT0gc2VsZWN0ZWRfYmcu Z3JlZW4gJiYKLSsgICAgICAgICAgICBub3JtYWxfYmcuYmx1ZSAgPT0gc2VsZWN0ZWRfYmcuYmx1 ZSAmJgotKyAgICAgICAgICAgIG5vcm1hbF9iZy5hbHBoYSA9PSBzZWxlY3RlZF9iZy5hbHBoYSkg ewotKyAgICAgICAgICAgIG5vcm1hbF9iZy5mcmVlKCk7Ci0rICAgICAgICAgICAgbm9ybWFsX2Jn ID0gbnVsbDsKLSsgICAgICAgICAgICBub3JtYWxfYmcuZnJlZSgpOwotKyAgICAgICAgICAgIG5v cm1hbF9iZyA9IG51bGw7Ci0rICAgICAgICAgICAgYmdfcHJvcCA9ICItZ3RrLXNlY29uZGFyeS1j YXJldC1jb2xvciI7Ci0rICAgICAgICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVG bGFncy5OT1JNQUwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ19wcm9wLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9iZyk7Ci0rICAgICAg ICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5TRUxFQ1RFRCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnX3Byb3AsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXQgc2VsZWN0ZWRfYmcpOwotKyAgICAgICAgfQotKyAgICAgICAgdGhp cy5ub3JtYWxfZmcgICA9IG5vcm1hbF9mZzsKLSsgICAgICAgIHRoaXMubm9ybWFsX2JnICAgPSBu b3JtYWxfYmc7Ci0rICAgICAgICB0aGlzLnNlbGVjdGVkX2ZnID0gc2VsZWN0ZWRfZmc7Ci0rICAg ICAgICB0aGlzLnNlbGVjdGVkX2JnID0gc2VsZWN0ZWRfYmc7Ci0rICAgIH0KLSt9Ci0rCi0gY2xh c3MgSWNvbldpZGdldDogR3RrLkltYWdlIHsKLSAgICAgLyoqCi0gICAgICAqIEljb25XaWRnZXQ6 Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wYW5lbC52YWxhIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1p bmRleCBiY2IzZWQ3NS4uZDkyMzhjODkgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsLnZhbGEK LSsrKyBiL3VpL2d0azMvcGFuZWwudmFsYQotQEAgLTIyLDM5ICsyMiwxNiBAQAotICAqLwotIAot IGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotLSAgICBwcml2YXRlIGNsYXNzIEtl eWJpbmRpbmcgewotLSAgICAgICAgcHVibGljIEtleWJpbmRpbmcodWludCBrZXlzeW0sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICBHZGsuTW9kaWZpZXJUeXBlIG1vZGlmaWVycywKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV2ZXJzZSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgIEtleUV2ZW50RnVuY1R5cGUgZnR5cGUpIHsKLS0gICAgICAgICAgICB0aGlzLmtleXN5 bSA9IGtleXN5bTsKLS0gICAgICAgICAgICB0aGlzLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKLS0g ICAgICAgICAgICB0aGlzLnJldmVyc2UgPSByZXZlcnNlOwotLSAgICAgICAgICAgIHRoaXMuZnR5 cGUgPSBmdHlwZTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHB1YmxpYyB1aW50IGtleXN5bSB7 IGdldDsgc2V0OyB9Ci0tICAgICAgICBwdWJsaWMgR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllcnMg eyBnZXQ7IHNldDsgfQotLSAgICAgICAgcHVibGljIGJvb2wgcmV2ZXJzZSB7IGdldDsgc2V0OyB9 Ci0tICAgICAgICBwdWJsaWMgS2V5RXZlbnRGdW5jVHlwZSBmdHlwZSB7IGdldDsgc2V0OyB9Ci0t ICAgIH0KLSAKLSAgICAgcHJpdmF0ZSBlbnVtIEljb25UeXBlIHsKLSAgICAgICAgIFNUQVRVU19J Q09OLAotICAgICAgICAgSU5ESUNBVE9SLAotICAgICB9Ci0gCi0tICAgIHByaXZhdGUgZW51bSBL ZXlFdmVudEZ1bmNUeXBlIHsKLS0gICAgICAgIEFOWSwKLS0gICAgICAgIElNRV9TV0lUQ0hFUiwK LS0gICAgICAgIEVNT0pJX1RZUElORywKLS0gICAgfQotLQotICAgICBwcml2YXRlIElCdXMuQnVz IG1fYnVzOwotICAgICBwcml2YXRlIEdMaWIuU2V0dGluZ3MgbV9zZXR0aW5nc19nZW5lcmFsID0g bnVsbDsKLSAgICAgcHJpdmF0ZSBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfaG90a2V5ID0gbnVs bDsKLSAgICAgcHJpdmF0ZSBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfcGFuZWwgPSBudWxsOwot LSAgICBwcml2YXRlIEdMaWIuU2V0dGluZ3MgbV9zZXR0aW5nc19lbW9qaSA9IG51bGw7Ci0gICAg IHByaXZhdGUgSWNvblR5cGUgbV9pY29uX3R5cGUgPSBJY29uVHlwZS5TVEFUVVNfSUNPTjsKLSAg ICAgcHJpdmF0ZSBJbmRpY2F0b3IgbV9pbmRpY2F0b3I7Ci0gI2lmIElORElDQVRPUgotQEAgLTcz LDEwICs1MCw2IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2 YXRlIENhbmRpZGF0ZVBhbmVsIG1fY2FuZGlkYXRlX3BhbmVsOwotICAgICBwcml2YXRlIFN3aXRj aGVyIG1fc3dpdGNoZXI7Ci0gICAgIHByaXZhdGUgdWludCBtX3N3aXRjaGVyX2ZvY3VzX3NldF9l bmdpbmVfaWQ7Ci0tICAgIHByaXZhdGUgSUJ1c0Vtb2ppZXI/IG1fZW1vamllcjsKLS0gICAgcHJp dmF0ZSB1aW50IG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZDsKLS0gICAgcHJpdmF0ZSB1aW50 IG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZDsKLS0gICAgcHJpdmF0ZSBzdHJpbmdbXSBt X2Vtb2ppZXJfZmF2b3JpdGVzID0ge307Ci0gICAgIHByaXZhdGUgUHJvcGVydHlNYW5hZ2VyIG1f cHJvcGVydHlfbWFuYWdlcjsKLSAgICAgcHJpdmF0ZSBQcm9wZXJ0eVBhbmVsIG1fcHJvcGVydHlf cGFuZWw7Ci0gICAgIHByaXZhdGUgR0xpYi5QaWQgbV9zZXR1cF9waWQgPSAwOwotQEAgLTEwOCw3 ICs4MSw4IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2YXRl IHVsb25nIG1fYWN0aXZhdGVfaWQ7Ci0gICAgIHByaXZhdGUgdWxvbmcgbV9yZWdpc3RlcmVkX3N0 YXR1c19ub3RpZmllcl9pdGVtX2lkOwotIAotLSAgICBwcml2YXRlIEdMaWIuTGlzdDxLZXliaW5k aW5nPiBtX2tleWJpbmRpbmdzID0gbmV3IEdMaWIuTGlzdDxLZXliaW5kaW5nPigpOwotKyAgICBw cml2YXRlIEdMaWIuTGlzdDxCaW5kaW5nQ29tbW9uLktleWJpbmRpbmc+IG1fa2V5YmluZGluZ3Mg PQotKyAgICAgICAgICAgIG5ldyBHTGliLkxpc3Q8QmluZGluZ0NvbW1vbi5LZXliaW5kaW5nPigp OwotIAotICAgICBwdWJsaWMgUGFuZWwoSUJ1cy5CdXMgYnVzKSB7Ci0gICAgICAgICBHTGliLmFz c2VydChidXMuaXNfY29ubmVjdGVkKCkpOwotQEAgLTE0Nyw4ICsxMjEsNiBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICBtX3N3aXRjaGVyLnNldF9wb3B1 cF9kZWxheV90aW1lKCh1aW50KSBtX3N3aXRjaGVyX2RlbGF5X3RpbWUpOwotICAgICAgICAgfQot IAotLSAgICAgICAgYmluZF9lbW9qaV9zaG9ydGN1dCgpOwotLQotICAgICAgICAgbV9wcm9wZXJ0 eV9tYW5hZ2VyID0gbmV3IFByb3BlcnR5TWFuYWdlcigpOwotICAgICAgICAgbV9wcm9wZXJ0eV9t YW5hZ2VyLnByb3BlcnR5X2FjdGl2YXRlLmNvbm5lY3QoKHcsIGssIHMpID0+IHsKLSAgICAgICAg ICAgICBwcm9wZXJ0eV9hY3RpdmF0ZShrLCBzKTsKLUBAIC0xNjgsNyArMTQwLDkgQEAgY2xhc3Mg UGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBpZiAobV9pbmRpY2F0b3IgIT0g bnVsbCkKLSAgICAgICAgICAgICBtX2luZGljYXRvci51bnJlZ2lzdGVyX2Nvbm5lY3Rpb24oKTsK LSAjZW5kaWYKLS0gICAgICAgIHVuYmluZF9zd2l0Y2hfc2hvcnRjdXQoS2V5RXZlbnRGdW5jVHlw ZS5BTlkpOwotKyAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KAot KyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUuQU5ZLCBtX2tl eWJpbmRpbmdzKTsKLSsgICAgICAgIG1fa2V5YmluZGluZ3MgPSBudWxsOwotICAgICB9Ci0gCi0g ICAgIHByaXZhdGUgdm9pZCBpbml0X3NldHRpbmdzKCkgewotQEAgLTE3Niw3ICsxNTAsNiBAQCBj bGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIG1fc2V0dGluZ3NfaG90 a2V5ID0KLSAgICAgICAgICAgICAgICAgbmV3IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3Rv cC5pYnVzLmdlbmVyYWwuaG90a2V5Iik7Ci0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsID0gbmV3 IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsIik7Ci0tICAgICAgICBt X3NldHRpbmdzX2Vtb2ppID0gbmV3IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVz LnBhbmVsLmVtb2ppIik7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwuY2hhbmdlZFsi cHJlbG9hZC1lbmdpbmVzIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICAgICAgIHVw ZGF0ZV9lbmdpbmVzKG1fc2V0dGluZ3NfZ2VuZXJhbC5nZXRfc3RydihrZXkpLAotQEAgLTIwNSwx NiArMTc4LDIzIEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAg fSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX2hvdGtleS5jaGFuZ2VkWyJ0cmlnZ2VycyJdLmNv bm5lY3QoKGtleSkgPT4gewotLSAgICAgICAgICAgICAgICB1bmJpbmRfc3dpdGNoX3Nob3J0Y3V0 KEtleUV2ZW50RnVuY1R5cGUuSU1FX1NXSVRDSEVSKTsKLSsgICAgICAgICAgICAgICAgQmluZGlu Z0NvbW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KAotKyAgICAgICAgICAgICAgICAgICAgICAg IEJpbmRpbmdDb21tb24uS2V5RXZlbnRGdW5jVHlwZS5JTUVfU1dJVENIRVIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgbV9rZXliaW5kaW5ncyk7Ci0rICAgICAgICAgICAgICAgIG1fa2V5Ymlu ZGluZ3MgPSBudWxsOwotICAgICAgICAgICAgICAgICBiaW5kX3N3aXRjaF9zaG9ydGN1dCgpOwot ICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbImN1c3Rv bS1mb250Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF9jdXN0b21f Zm9udCgpOwotKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udCht X3NldHRpbmdzX3BhbmVsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudWxsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOwotICAgICAgICAgfSk7Ci0gCi0gICAgICAgICBtX3Nl dHRpbmdzX3BhbmVsLmNoYW5nZWRbInVzZS1jdXN0b20tZm9udCJdLmNvbm5lY3QoKGtleSkgPT4g ewotLSAgICAgICAgICAgICAgICBzZXRfY3VzdG9tX2ZvbnQoKTsKLSsgICAgICAgICAgICAgICAg QmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ZvbnQobV9zZXR0aW5nc19wYW5lbCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3NzX3Byb3ZpZGVyKTsK LSAgICAgICAgIH0pOwotIAotICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJzaG93 LWljb24tb24tc3lzdHJheSJdLmNvbm5lY3QoKGtleSkgPT4gewotQEAgLTI0NSwzOSArMjI1LDYg QEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBtX3NldHRpbmdz X3BhbmVsLmNoYW5nZWRbInByb3BlcnR5LWljb24tZGVsYXktdGltZSJdLmNvbm5lY3QoKGtleSkg PT4gewotICAgICAgICAgICAgICAgICBzZXRfcHJvcGVydHlfaWNvbl9kZWxheV90aW1lKCk7Ci0g ICAgICAgICB9KTsKLS0KLS0gICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsiaG90a2V5 Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHVuYmluZF9zd2l0Y2hfc2hv cnRjdXQoS2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJTkcpOwotLSAgICAgICAgICAgICAgICBi aW5kX2Vtb2ppX3Nob3J0Y3V0KCk7Ci0tICAgICAgICB9KTsKLS0KLS0gICAgICAgIG1fc2V0dGlu Z3NfZW1vamkuY2hhbmdlZFsiZm9udCJdLmNvbm5lY3QoKGtleSkgPT4gewotLSAgICAgICAgICAg ICAgICBzZXRfY3VzdG9tX2ZvbnQoKTsKLS0gICAgICAgIH0pOwotLQotLSAgICAgICAgbV9zZXR0 aW5nc19lbW9qaS5jaGFuZ2VkWyJmYXZvcml0ZXMiXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAg ICAgICAgICAgICAgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpOwotLSAgICAgICAgfSk7Ci0tCi0tICAg ICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImZhdm9yaXRlLWFubm90YXRpb25zIl0uY29u bmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF9lbW9qaV9mYXZvcml0ZXMoKTsK LS0gICAgICAgIH0pOwotLQotLSAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJsYW5n Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF9lbW9qaV9sYW5nKCk7 Ci0tICAgICAgICB9KTsKLS0KLS0gICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsiaGFz LXBhcnRpYWwtbWF0Y2giXS5jb25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgc2V0 X2Vtb2ppX3BhcnRpYWxfbWF0Y2goKTsKLS0gICAgICAgIH0pOwotLQotLSAgICAgICAgbV9zZXR0 aW5nc19lbW9qaS5jaGFuZ2VkWyJwYXJ0aWFsLW1hdGNoLWxlbmd0aCJdLmNvbm5lY3QoKGtleSkg PT4gewotLSAgICAgICAgICAgICAgICBzZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpOwotLSAgICAg ICAgfSk7Ci0tCi0tICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbInBhcnRpYWwtbWF0 Y2gtY29uZGl0aW9uIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0tICAgICAgICAgICAgICAgIHNldF9l bW9qaV9wYXJ0aWFsX21hdGNoKCk7Ci0tICAgICAgICB9KTsKLSAgICAgfQotIAotICAgICBwcml2 YXRlIHZvaWQgcG9wdXBfbWVudV9hdF9hcmVhX3dpbmRvdyhHdGsuTWVudSAgICAgICAgICAgICAg bWVudSwKLUBAIC00MDksMTIwICszNTYsNDAgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2Vy dmljZSB7Ci0gICAgICAgICBtX3N0YXR1c19pY29uLnNldF9mcm9tX2ljb25fbmFtZSgiaWJ1cy1r ZXlib2FyZCIpOwotICAgICB9Ci0gCi0tICAgIHByaXZhdGUgdm9pZCBrZXliaW5kaW5nX21hbmFn ZXJfYmluZChLZXliaW5kaW5nTWFuYWdlciBrZXliaW5kaW5nX21hbmFnZXIsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc/ICAgICAgICAgICBhY2NlbGVy YXRvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleUV2ZW50 RnVuY1R5cGUgIGZ0eXBlKSB7Ci0tICAgICAgICB1aW50IHN3aXRjaF9rZXlzeW0gPSAwOwotLSAg ICAgICAgR2RrLk1vZGlmaWVyVHlwZSBzd2l0Y2hfbW9kaWZpZXJzID0gMDsKLS0gICAgICAgIEdk ay5Nb2RpZmllclR5cGUgcmV2ZXJzZV9tb2RpZmllciA9IEdkay5Nb2RpZmllclR5cGUuU0hJRlRf TUFTSzsKLS0gICAgICAgIEtleWJpbmRpbmcga2V5YmluZGluZzsKLS0KLS0gICAgICAgIEd0ay5h Y2NlbGVyYXRvcl9wYXJzZShhY2NlbGVyYXRvciwKLS0gICAgICAgICAgICAgICAgb3V0IHN3aXRj aF9rZXlzeW0sIG91dCBzd2l0Y2hfbW9kaWZpZXJzKTsKLS0KLS0gICAgICAgIC8vIE1hcCB2aXJ0 dWFsIG1vZGlmaWVycyB0byAoaS5lLiBNb2QyLCBNb2QzLCAuLi4pCi0tICAgICAgICBjb25zdCBH ZGsuTW9kaWZpZXJUeXBlIFZJUlRVQUxfTU9ESUZJRVJTID0gKAotLSAgICAgICAgICAgICAgICBH ZGsuTW9kaWZpZXJUeXBlLlNVUEVSX01BU0sgfAotLSAgICAgICAgICAgICAgICBHZGsuTW9kaWZp ZXJUeXBlLkhZUEVSX01BU0sgfAotLSAgICAgICAgICAgICAgICBHZGsuTW9kaWZpZXJUeXBlLk1F VEFfTUFTSyk7Ci0tICAgICAgICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiBWSVJUVUFMX01PRElG SUVSUykgIT0gMCkgewotLSAgICAgICAgLy8gd29ya2Fyb3VuZCBhIGJ1ZyBpbiBnZGsgdmFwaSB2 YWxhID4gMC4xOAotLSAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19i dWcuY2dpP2lkPTY3NzU1OQotLSNpZiBWQUxBXzBfMTgKLS0gICAgICAgICAgICBHZGsuS2V5bWFw LmdldF9kZWZhdWx0KCkubWFwX3ZpcnR1YWxfbW9kaWZpZXJzKAotLSAgICAgICAgICAgICAgICAg ICAgcmVmIHN3aXRjaF9tb2RpZmllcnMpOwotLSNlbHNlCi0tICAgICAgICAgICAgaWYgKChzd2l0 Y2hfbW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5TVVBFUl9NQVNLKSAhPSAwKQotLSAgICAg ICAgICAgICAgICBzd2l0Y2hfbW9kaWZpZXJzIHw9IEdkay5Nb2RpZmllclR5cGUuTU9ENF9NQVNL OwotLSAgICAgICAgICAgIGlmICgoc3dpdGNoX21vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUu SFlQRVJfTUFTSykgIT0gMCkKLS0gICAgICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycyB8PSBH ZGsuTW9kaWZpZXJUeXBlLk1PRDRfTUFTSzsKLS0jZW5kaWYKLS0gICAgICAgICAgICBzd2l0Y2hf bW9kaWZpZXJzICY9IH5WSVJUVUFMX01PRElGSUVSUzsKLS0gICAgICAgIH0KLS0KLS0gICAgICAg IGlmIChzd2l0Y2hfa2V5c3ltID09IDAgJiYgc3dpdGNoX21vZGlmaWVycyA9PSAwKSB7Ci0tICAg ICAgICAgICAgd2FybmluZygiUGFyc2UgYWNjZWxlcmF0b3IgJyVzJyBmYWlsZWQhIiwgYWNjZWxl cmF0b3IpOwotLSAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGtl eWJpbmRpbmcgPSBuZXcgS2V5YmluZGluZyhzd2l0Y2hfa2V5c3ltLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaF9tb2RpZmllcnMsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnR5cGUpOwotLSAgICAgICAgbV9rZXliaW5kaW5ncy5hcHBlbmQoa2V5YmluZGlu Zyk7Ci0tCi0tICAgICAgICAvKiBXb3JrYXJvdW5kIG5vdCB0byBmcmVlIHRoZSBwb2ludGVyIG9m IGhhbmRsZV9lbmdpbmVfc3dpdGNoKCkgKi8KLS0gICAgICAgIGlmIChmdHlwZSA9PSBLZXlFdmVu dEZ1bmNUeXBlLklNRV9TV0lUQ0hFUikgewotLSAgICAgICAgICAgIGtleWJpbmRpbmdfbWFuYWdl ci5iaW5kKHN3aXRjaF9rZXlzeW0sIHN3aXRjaF9tb2RpZmllcnMsCi0tICAgICAgICAgICAgICAg ICAgICAoZSkgPT4gaGFuZGxlX2VuZ2luZV9zd2l0Y2goZSwgZmFsc2UpKTsKLS0gICAgICAgIH0g ZWxzZSBpZiAoZnR5cGUgPT0gS2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJTkcpIHsKLS0gICAg ICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIuYmluZChzd2l0Y2hfa2V5c3ltLCBzd2l0Y2hfbW9k aWZpZXJzLAotLSAgICAgICAgICAgICAgICAgICAgKGUpID0+IGhhbmRsZV9lbW9qaV90eXBpbmco ZSkpOwotLSAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIC8vIGFj Y2VsZXJhdG9yIGFscmVhZHkgaGFzIFNoaWZ0IG1hc2sKLS0gICAgICAgIGlmICgoc3dpdGNoX21v ZGlmaWVycyAmIHJldmVyc2VfbW9kaWZpZXIpICE9IDApIHsKLS0gICAgICAgICAgICByZXR1cm47 Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBzd2l0Y2hfbW9kaWZpZXJzIHw9IHJldmVyc2VfbW9k aWZpZXI7Ci0tCi0tICAgICAgICBrZXliaW5kaW5nID0gbmV3IEtleWJpbmRpbmcoc3dpdGNoX2tl eXN5bSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfbW9kaWZp ZXJzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnR5cGUpOwotLSAgICAgICAgbV9rZXliaW5k aW5ncy5hcHBlbmQoa2V5YmluZGluZyk7Ci0tCi0tICAgICAgICBpZiAoZnR5cGUgPT0gS2V5RXZl bnRGdW5jVHlwZS5JTUVfU1dJVENIRVIpIHsKLS0gICAgICAgICAgICBrZXliaW5kaW5nX21hbmFn ZXIuYmluZChzd2l0Y2hfa2V5c3ltLCBzd2l0Y2hfbW9kaWZpZXJzLAotLSAgICAgICAgICAgICAg ICAgICAgKGUpID0+IGhhbmRsZV9lbmdpbmVfc3dpdGNoKGUsIHRydWUpKTsKLS0gICAgICAgIH0K LS0gICAgfQotLQotICAgICBwcml2YXRlIHZvaWQgYmluZF9zd2l0Y2hfc2hvcnRjdXQoKSB7Ci0g ICAgICAgICBzdHJpbmdbXSBhY2NlbGVyYXRvcnMgPSBtX3NldHRpbmdzX2hvdGtleS5nZXRfc3Ry digidHJpZ2dlcnMiKTsKLSAKLSAgICAgICAgIHZhciBrZXliaW5kaW5nX21hbmFnZXIgPSBLZXli aW5kaW5nTWFuYWdlci5nZXRfaW5zdGFuY2UoKTsKLSAKLSAgICAgICAgIGZvcmVhY2ggKHZhciBh Y2NlbGVyYXRvciBpbiBhY2NlbGVyYXRvcnMpIHsKLS0gICAgICAgICAgICBrZXliaW5kaW5nX21h bmFnZXJfYmluZChrZXliaW5kaW5nX21hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWNjZWxlcmF0b3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgS2V5RXZlbnRGdW5jVHlwZS5JTUVfU1dJVENIRVIpOwotLSAgICAgICAgfQotLSAgICB9 Ci0tCi0tICAgIHByaXZhdGUgdm9pZCBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCkgewotLSNpZiBFTU9K SV9ESUNUCi0tICAgICAgICBzdHJpbmdbXSBhY2NlbGVyYXRvcnMgPSBtX3NldHRpbmdzX2Vtb2pp LmdldF9zdHJ2KCJob3RrZXkiKTsKLS0KLS0gICAgICAgIHZhciBrZXliaW5kaW5nX21hbmFnZXIg PSBLZXliaW5kaW5nTWFuYWdlci5nZXRfaW5zdGFuY2UoKTsKLS0KLS0gICAgICAgIGZvcmVhY2gg KHZhciBhY2NlbGVyYXRvciBpbiBhY2NlbGVyYXRvcnMpIHsKLS0gICAgICAgICAgICBrZXliaW5k aW5nX21hbmFnZXJfYmluZChrZXliaW5kaW5nX21hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0b3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgS2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJTkcpOwotKyAgICAgICAgICAg IEJpbmRpbmdDb21tb24ua2V5YmluZGluZ19tYW5hZ2VyX2JpbmQoCi0rICAgICAgICAgICAgICAg ICAgICBrZXliaW5kaW5nX21hbmFnZXIsCi0rICAgICAgICAgICAgICAgICAgICByZWYgbV9rZXli aW5kaW5ncywKLSsgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yLAotKyAgICAgICAgICAg ICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLklNRV9TV0lUQ0hFUiwKLSsg ICAgICAgICAgICAgICAgICAgIGhhbmRsZV9lbmdpbmVfc3dpdGNoX25vcm1hbCwKLSsgICAgICAg ICAgICAgICAgICAgIGhhbmRsZV9lbmdpbmVfc3dpdGNoX3JldmVyc2UpOwotICAgICAgICAgfQot LSNlbmRpZgotICAgICB9Ci0gCi0tICAgIHByaXZhdGUgdm9pZCB1bmJpbmRfc3dpdGNoX3Nob3J0 Y3V0KEtleUV2ZW50RnVuY1R5cGUgZnR5cGUpIHsKLSsvKgotKyAgICBwdWJsaWMgc3RhdGljIHZv aWQKLSsgICAgdW5iaW5kX3N3aXRjaF9zaG9ydGN1dChLZXlFdmVudEZ1bmNUeXBlICAgICAgZnR5 cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5MaXN0PEtleWJpbmRpbmc+IGtl eWJpbmRpbmdzKSB7Ci0gICAgICAgICB2YXIga2V5YmluZGluZ19tYW5hZ2VyID0gS2V5YmluZGlu Z01hbmFnZXIuZ2V0X2luc3RhbmNlKCk7Ci0gCi0tICAgICAgICB1bm93bmVkIEdMaWIuTGlzdDxL ZXliaW5kaW5nPiBrZXliaW5kaW5ncyA9IG1fa2V5YmluZGluZ3M7Ci0tCi0gICAgICAgICB3aGls ZSAoa2V5YmluZGluZ3MgIT0gbnVsbCkgewotICAgICAgICAgICAgIEtleWJpbmRpbmcga2V5Ymlu ZGluZyA9IGtleWJpbmRpbmdzLmRhdGE7Ci0gCi0tICAgICAgICAgICAgaWYgKGZ0eXBlID09IEtl eUV2ZW50RnVuY1R5cGUuQU5ZIHx8IGZ0eXBlID09IGtleWJpbmRpbmcuZnR5cGUpIHsKLSsgICAg ICAgICAgICBpZiAoZnR5cGUgPT0gS2V5RXZlbnRGdW5jVHlwZS5BTlkgfHwKLSsgICAgICAgICAg ICAgICAgZnR5cGUgPT0ga2V5YmluZGluZy5mdHlwZSkgewotICAgICAgICAgICAgICAgICBrZXli aW5kaW5nX21hbmFnZXIudW5iaW5kKGtleWJpbmRpbmcua2V5c3ltLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmcubW9kaWZpZXJzKTsKLSAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAga2V5YmluZGluZ3MgPSBrZXliaW5kaW5ncy5uZXh0Owot ICAgICAgICAgfQotLQotLSAgICAgICAgbV9rZXliaW5kaW5ncyA9IG51bGw7Ci0gICAgIH0KLSsq LwotIAotICAgICAvKioKLSAgICAgICogcGFuZWxfZ2V0X2VuZ2luZXNfZnJvbV94a2I6Ci1AQCAt NjcwLDY5ICs1MzcsNiBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAg ICAgIG1fc2V0dGluZ3NfZ2VuZXJhbC5zZXRfc3RydigicHJlbG9hZC1lbmdpbmVzIiwgbmFtZXMp OwotICAgICB9Ci0gCi0tICAgIHByaXZhdGUgdm9pZCBzZXRfY3VzdG9tX2ZvbnQoKSB7Ci0tICAg ICAgICBHZGsuRGlzcGxheSBkaXNwbGF5ID0gR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKTsKLS0g ICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gKGRpc3BsYXkgIT0gbnVsbCkgPwotLSAgICAgICAg ICAgICAgICBkaXNwbGF5LmdldF9kZWZhdWx0X3NjcmVlbigpIDogbnVsbDsKLS0KLS0gICAgICAg IGlmIChzY3JlZW4gPT0gbnVsbCkgewotLSAgICAgICAgICAgIHdhcm5pbmcoIkNvdWxkIG5vdCBv cGVuIGRpc3BsYXkuIik7Ci0tICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAg ICAgICAgc3RyaW5nIGVtb2ppX2ZvbnQgPSBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImZv bnQiKTsKLS0gICAgICAgIGlmIChlbW9qaV9mb250ID09IG51bGwpIHsKLS0gICAgICAgICAgICB3 YXJuaW5nKCJObyBjb25maWcgZW1vamk6Zm9udC4iKTsKLS0gICAgICAgICAgICByZXR1cm47Ci0t ICAgICAgICB9Ci0tICAgICAgICBJQnVzRW1vamllci5zZXRfZW1vamlfZm9udChlbW9qaV9mb250 KTsKLS0KLS0gICAgICAgIGJvb2wgdXNlX2N1c3RvbV9mb250ID0gbV9zZXR0aW5nc19wYW5lbC5n ZXRfYm9vbGVhbigidXNlLWN1c3RvbS1mb250Iik7Ci0tCi0tICAgICAgICBpZiAobV9jc3NfcHJv dmlkZXIgIT0gbnVsbCkgewotLSAgICAgICAgICAgIEd0ay5TdHlsZUNvbnRleHQucmVtb3ZlX3By b3ZpZGVyX2Zvcl9zY3JlZW4oc2NyZWVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jc3NfcHJvdmlkZXIpOwotLSAgICAgICAgICAg IG1fY3NzX3Byb3ZpZGVyID0gbnVsbDsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmICh1c2Vf Y3VzdG9tX2ZvbnQgPT0gZmFsc2UpIHsKLS0gICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9 Ci0tCi0tICAgICAgICBzdHJpbmcgY3VzdG9tX2ZvbnQgPSBtX3NldHRpbmdzX3BhbmVsLmdldF9z dHJpbmcoImN1c3RvbS1mb250Iik7Ci0tICAgICAgICBpZiAoY3VzdG9tX2ZvbnQgPT0gbnVsbCkg ewotLSAgICAgICAgICAgIHdhcm5pbmcoIk5vIGNvbmZpZyBwYW5lbDpjdXN0b20tZm9udC4iKTsK LS0gICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBQYW5nby5Gb250 RGVzY3JpcHRpb24gZm9udF9kZXNjID0KLS0gICAgICAgICAgICAgICAgUGFuZ28uRm9udERlc2Ny aXB0aW9uLmZyb21fc3RyaW5nKGN1c3RvbV9mb250KTsKLS0gICAgICAgIHN0cmluZyBmb250X2Zh bWlseSA9IGZvbnRfZGVzYy5nZXRfZmFtaWx5KCk7Ci0tICAgICAgICBpbnQgZm9udF9zaXplID0g Zm9udF9kZXNjLmdldF9zaXplKCkgLyBQYW5nby5TQ0FMRTsKLS0gICAgICAgIHN0cmluZyBkYXRh OwotLQotLSAgICAgICAgaWYgKEd0ay5NQUpPUl9WRVJTSU9OIDwgMyB8fAotLSAgICAgICAgICAg IChHdGsuTUFKT1JfVkVSU0lPTiA9PSAzICYmIEd0ay5NSU5PUl9WRVJTSU9OIDwgMjApKSB7Ci0t ICAgICAgICAgICAgZGF0YSA9ICJHdGtMYWJlbCB7IGZvbnQ6ICVzOyB9Ii5wcmludGYoY3VzdG9t X2ZvbnQpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBkYXRhID0gImxhYmVsIHsg Zm9udC1mYW1pbHk6ICVzOyBmb250LXNpemU6ICVkcHQ7IH0iCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnByaW50Zihmb250X2ZhbWlseSwgZm9udF9zaXplKTsKLS0gICAgICAgIH0KLS0K LS0gICAgICAgIG1fY3NzX3Byb3ZpZGVyID0gbmV3IEd0ay5Dc3NQcm92aWRlcigpOwotLQotLSAg ICAgICAgdHJ5IHsKLS0gICAgICAgICAgICBtX2Nzc19wcm92aWRlci5sb2FkX2Zyb21fZGF0YShk YXRhLCAtMSk7Ci0tICAgICAgICB9IGNhdGNoIChHTGliLkVycm9yIGUpIHsKLS0gICAgICAgICAg ICB3YXJuaW5nKCJGYWlsZWQgY3NzX3Byb3ZpZGVyX2Zyb21fZGF0YTogJXM6ICVzIiwgY3VzdG9t X2ZvbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGUubWVzc2FnZSk7Ci0tICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAg fQotLQotLSAgICAgICAgR3RrLlN0eWxlQ29udGV4dC5hZGRfcHJvdmlkZXJfZm9yX3NjcmVlbihz Y3JlZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1fY3NzX3Byb3ZpZGVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHdGsuU1RZTEVfUFJPVklERVJfUFJJT1JJVFlfQVBQTElDQVRJT04pOwotLSAg ICB9Ci0gCi0gICAgIHByaXZhdGUgdm9pZCBzZXRfc3dpdGNoZXJfZGVsYXlfdGltZSgpIHsKLSAg ICAgICAgIG1fc3dpdGNoZXJfZGVsYXlfdGltZSA9Ci1AQCAtODU1LDM1ICs2NTksNiBAQCBjbGFz cyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICAgICAgbV9zZXR0aW5n c19wYW5lbC5nZXRfaW50KCJwcm9wZXJ0eS1pY29uLWRlbGF5LXRpbWUiKTsKLSAgICAgfQotIAot LSAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpIHsKLS0gICAgICAgIG1fZW1v amllcl9mYXZvcml0ZXMgPSBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJmYXZvcml0ZXMiKTsK LS0gICAgICAgIElCdXNFbW9qaWVyLnNldF9mYXZvcml0ZXMoCi0tICAgICAgICAgICAgICAgIG1f ZW1vamllcl9mYXZvcml0ZXMsCi0tICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0 X3N0cnYoImZhdm9yaXRlLWFubm90YXRpb25zIikpOwotLSAgICB9Ci0tCi0tICAgIHByaXZhdGUg dm9pZCBzZXRfZW1vamlfbGFuZygpIHsKLS0gICAgICAgIGlmIChtX2Vtb2ppZXJfc2V0X2Vtb2pp X2xhbmdfaWQgPiAwKSB7Ci0tICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fZW1vamll cl9zZXRfZW1vamlfbGFuZ19pZCk7Ci0tICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9s YW5nX2lkID0gMDsKLS0gICAgICAgIH0KLS0gICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFu Z19pZCA9IEdMaWIuSWRsZS5hZGQoKCkgPT4gewotLSAgICAgICAgICAgIElCdXNFbW9qaWVyLnNl dF9hbm5vdGF0aW9uX2xhbmcoCi0tICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2pp LmdldF9zdHJpbmcoImxhbmciKSk7Ci0tICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9s YW5nX2lkID0gMDsKLS0gICAgICAgICAgICBJQnVzRW1vamllci5sb2FkX3VuaWNvZGVfZGljdCgp OwotLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgICAgIH0pOwotLSAgICB9Ci0tCi0t ICAgIHByaXZhdGUgdm9pZCBzZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpIHsKLS0gICAgICAgIElC dXNFbW9qaWVyLnNldF9wYXJ0aWFsX21hdGNoKAotLSAgICAgICAgICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLmdldF9ib29sZWFuKCJoYXMtcGFydGlhbC1tYXRjaCIpKTsKLS0gICAgICAgIElCdXNF bW9qaWVyLnNldF9wYXJ0aWFsX21hdGNoX2xlbmd0aCgKLS0gICAgICAgICAgICAgICAgbV9zZXR0 aW5nc19lbW9qaS5nZXRfaW50KCJwYXJ0aWFsLW1hdGNoLWxlbmd0aCIpKTsKLS0gICAgICAgIElC dXNFbW9qaWVyLnNldF9wYXJ0aWFsX21hdGNoX2NvbmRpdGlvbigKLS0gICAgICAgICAgICAgICAg bV9zZXR0aW5nc19lbW9qaS5nZXRfaW50KCJwYXJ0aWFsLW1hdGNoLWNvbmRpdGlvbiIpKTsKLS0g ICAgfQotIAotICAgICBwcml2YXRlIGludCBjb21wYXJlX3ZlcnNpb25zKHN0cmluZyB2ZXJzaW9u MSwgc3RyaW5nIHZlcnNpb24yKSB7Ci0gICAgICAgICBzdHJpbmdbXSB2ZXJzaW9uMV9saXN0ID0g dmVyc2lvbjEuc3BsaXQoIi4iKTsKLUBAIC05ODUsMTIgKzc2MCwxNiBAQCBjbGFzcyBQYW5lbCA6 IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIHNldF91c2VfeG1vZG1hcCgpOwotICAgICAg ICAgdXBkYXRlX2VuZ2luZXMobV9zZXR0aW5nc19nZW5lcmFsLmdldF9zdHJ2KCJwcmVsb2FkLWVu Z2luZXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZ2VuZXJhbC5nZXRf c3RydigiZW5naW5lcy1vcmRlciIpKTsKLS0gICAgICAgIHVuYmluZF9zd2l0Y2hfc2hvcnRjdXQo S2V5RXZlbnRGdW5jVHlwZS5BTlkpOwotKyAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dp dGNoX3Nob3J0Y3V0KAotKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVu Y1R5cGUuQU5ZLAotKyAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzKTsKLSsgICAgICAgIG1f a2V5YmluZGluZ3MgPSBudWxsOwotICAgICAgICAgYmluZF9zd2l0Y2hfc2hvcnRjdXQoKTsKLS0g ICAgICAgIGJpbmRfZW1vamlfc2hvcnRjdXQoKTsKLSAgICAgICAgIHNldF9zd2l0Y2hlcl9kZWxh eV90aW1lKCk7Ci0gICAgICAgICBzZXRfZW1iZWRfcHJlZWRpdF90ZXh0KCk7Ci0tICAgICAgICBz ZXRfY3VzdG9tX2ZvbnQoKTsKLSsgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250 KG1fc2V0dGluZ3NfcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudWxsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3Nz X3Byb3ZpZGVyKTsKLSAgICAgICAgIHNldF9zaG93X2ljb25fb25fc3lzdHJheSgpOwotICAgICAg ICAgc2V0X2xvb2t1cF90YWJsZV9vcmllbnRhdGlvbigpOwotICAgICAgICAgc2V0X3Nob3dfcHJv cGVydHlfcGFuZWwoKTsKLUBAIC05OTgsOSArNzc3LDYgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBh bmVsU2VydmljZSB7Ci0gICAgICAgICBzZXRfZm9sbG93X2lucHV0X2N1cnNvcl93aGVuX2Fsd2F5 c19zaG93bl9wcm9wZXJ0eV9wYW5lbCgpOwotICAgICAgICAgc2V0X3hrYl9pY29uX3JnYmEoKTsK LSAgICAgICAgIHNldF9wcm9wZXJ0eV9pY29uX2RlbGF5X3RpbWUoKTsKLS0gICAgICAgIHNldF9l bW9qaV9mYXZvcml0ZXMoKTsKLS0gICAgICAgIHNldF9lbW9qaV9sYW5nKCk7Ci0tICAgICAgICBz ZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpOwotICAgICB9Ci0gCi0gICAgIC8qKgotQEAgLTEwMzcs MTAgKzgxMyw2IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAg ICAgIEdMaWIuU291cmNlLnJlbW92ZShtX3ByZWxvYWRfZW5naW5lc19pZCk7Ci0gICAgICAgICAg ICAgbV9wcmVsb2FkX2VuZ2luZXNfaWQgPSAwOwotICAgICAgICAgfQotLSAgICAgICAgaWYgKG1f ZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA+IDApIHsKLS0gICAgICAgICAgICBHTGliLlNvdXJj ZS5yZW1vdmUobV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkKTsKLS0gICAgICAgICAgICBtX2Vt b2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSAwOwotLSAgICAgICAgfQotICAgICB9Ci0gCi0gICAg IHByaXZhdGUgdm9pZCBlbmdpbmVfY29udGV4dHNfaW5zZXJ0KElCdXMuRW5naW5lRGVzYyBlbmdp bmUpIHsKLUBAIC0xMDkxLDcgKzg2MywxNSBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2 aWNlIHsKLSAgICAgICAgIHNldF9lbmdpbmUoZW5naW5lKTsKLSAgICAgfQotIAotLSAgICBwcml2 YXRlIHZvaWQgaGFuZGxlX2VuZ2luZV9zd2l0Y2goR2RrLkV2ZW50IGV2ZW50LCBib29sIHJldmVy dCkgewotKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2VuZ2luZV9zd2l0Y2hfbm9ybWFsKEdkay5F dmVudCBldmVudCkgewotKyAgICAgICAgaGFuZGxlX2VuZ2luZV9zd2l0Y2goZXZlbnQsIGZhbHNl KTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2VuZ2luZV9zd2l0Y2hfcmV2 ZXJzZShHZGsuRXZlbnQgZXZlbnQpIHsKLSsgICAgICAgIGhhbmRsZV9lbmdpbmVfc3dpdGNoKGV2 ZW50LCB0cnVlKTsKLSsgICAgfQotKwotKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2VuZ2luZV9z d2l0Y2goR2RrLkV2ZW50IGV2ZW50LCBib29sIHJldmVyc2UpIHsKLSAgICAgICAgIC8vIERvIG5v dCBuZWVkIHN3aXRjaCBJTUUKLSAgICAgICAgIGlmIChtX2VuZ2luZXMubGVuZ3RoIDw9IDEpCi0g ICAgICAgICAgICAgcmV0dXJuOwotQEAgLTExMDUsMTIgKzg4NSwxMiBAQCBjbGFzcyBQYW5lbCA6 IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIGJvb2wgcHJlc3NlZCA9IEtleWJpbmRpbmdN YW5hZ2VyLnByaW1hcnlfbW9kaWZpZXJfc3RpbGxfcHJlc3NlZCgKLSAgICAgICAgICAgICAgICAg ZXZlbnQsIHByaW1hcnlfbW9kaWZpZXJzKTsKLSAKLS0gICAgICAgIGlmIChyZXZlcnQpIHsKLSsg ICAgICAgIGlmIChyZXZlcnNlKSB7Ci0gICAgICAgICAgICAgbW9kaWZpZXJzICY9IH5HZGsuTW9k aWZpZXJUeXBlLlNISUZUX01BU0s7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAocHJlc3Nl ZCAmJiBtX3N3aXRjaGVyX2RlbGF5X3RpbWUgPj0gMCkgewotLSAgICAgICAgICAgIGludCBpID0g cmV2ZXJ0ID8gbV9lbmdpbmVzLmxlbmd0aCAtIDEgOiAxOwotKyAgICAgICAgICAgIGludCBpID0g cmV2ZXJzZSA/IG1fZW5naW5lcy5sZW5ndGggLSAxIDogMTsKLSAKLSAgICAgICAgICAgICAvKiBU aGUgZmxhZyBvZiBtX3N3aXRjaGVyLmlzX3J1bm5pbmcgYXZvaWRzIHRoZSBmb2xsb3dpbmcgcHJv YmxlbToKLSAgICAgICAgICAgICAgKgotQEAgLTExMzIsMjggKzkxMiwxMSBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hlcl9m b2N1c19zZXRfZW5naW5lKCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIHsKLS0g ICAgICAgICAgICBpbnQgaSA9IHJldmVydCA/IG1fZW5naW5lcy5sZW5ndGggLSAxIDogMTsKLSsg ICAgICAgICAgICBpbnQgaSA9IHJldmVyc2UgPyBtX2VuZ2luZXMubGVuZ3RoIC0gMSA6IDE7Ci0g ICAgICAgICAgICAgc3dpdGNoX2VuZ2luZShpKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAg ICBwcml2YXRlIHZvaWQgc2hvd19lbW9qaWVyKEdkay5FdmVudCBldmVudCkgewotLSAgICAgICAg bV9lbW9qaWVyID0gbmV3IElCdXNFbW9qaWVyKCk7Ci0tICAgICAgICBzdHJpbmcgZW1vamkgPSBt X2Vtb2ppZXIucnVuKG1fcmVhbF9jdXJyZW50X2NvbnRleHRfcGF0aCwgZXZlbnQpOwotLSAgICAg ICAgaWYgKGVtb2ppID09IG51bGwpIHsKLS0gICAgICAgICAgICBtX2Vtb2ppZXIgPSBudWxsOwot LSAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0gICAgICAgIHRoaXMuZW1vamllcl9m b2N1c19jb21taXQoKTsKLS0gICAgfQotLQotLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2Vtb2pp X3R5cGluZyhHZGsuRXZlbnQgZXZlbnQpIHsKLS0gICAgICAgIGlmIChtX2Vtb2ppZXIgIT0gbnVs bCAmJiBtX2Vtb2ppZXIuaXNfcnVubmluZygpKSB7Ci0tICAgICAgICAgICAgbV9lbW9qaWVyLnBy ZXNlbnRfY2VudHJhbGl6ZShldmVudCk7Ci0tICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAg fQotLSAgICAgICAgc2hvd19lbW9qaWVyKGV2ZW50KTsKLS0gICAgfQotIAotICAgICBwcml2YXRl IHZvaWQgcnVuX3ByZWxvYWRfZW5naW5lcyhJQnVzLkVuZ2luZURlc2NbXSBlbmdpbmVzLCBpbnQg aW5kZXgpIHsKLSAgICAgICAgIHN0cmluZ1tdIG5hbWVzID0ge307Ci1AQCAtMTM5Myw3ICsxMTU2 LDE4IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgICAg ICAgICAgZXZlbnQua2V5LndpbmRvdyA9IEdkay5nZXRfZGVmYXVsdF9yb290X3dpbmRvdygpOwot ICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5LndpbmRvdy5yZWYoKTsKLSAgICAgICAgICAg ICAgICAgfQotLSAgICAgICAgICAgICAgICBoYW5kbGVfZW1vamlfdHlwaW5nKGV2ZW50KTsKLSsg ICAgICAgICAgICAgICAgSUJ1cy5YRXZlbnQgeGV2ZW50ID0gbmV3IElCdXMuWEV2ZW50KAotKyAg ICAgICAgICAgICAgICAgICAgICAgICJldmVudC10eXBlIiwgSUJ1cy5YRXZlbnRUeXBlLktFWV9Q UkVTUywKLSsgICAgICAgICAgICAgICAgICAgICAgICAid2luZG93IiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAoZXZlbnQua2V5LndpbmRvdyBhcyBHZGsuWDExLldpbmRvdykuZ2V0X3hpZCgp LAotKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgZXZlbnQua2V5LnRpbWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgInB1cnBvc2UiLCAiZW1vamkiKTsKLSsgICAgICAgICAgICAg ICAgLyogbmV3IEdMaWIuVmFyaWFudCgiKHN2KSIsICJlbW9qaSIsIHhldmVudC5zZXJpYWxpemVf b2JqZWN0KCkpCi0rICAgICAgICAgICAgICAgICAqIHdpbGwgY2FsbCBnX3ZhcmlhbnRfdW5yZWYo KSBmb3IgdGhlIGNoaWxkIHZhcmlhbnQgYnkgdmFsYS4KLSsgICAgICAgICAgICAgICAgICogSSBo YXZlIG5vIGlkZWEgbm90IHRvIHVucmVmIHRoZSBvYmplY3Qgc28gaW50ZWdyYXRlZAotKyAgICAg ICAgICAgICAgICAgKiB0aGUgcHVycG9zZSB0byBJQnVzLlhFdmVudCBhYm92ZS4KLSsgICAgICAg ICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgIHBhbmVsX2V4dGVuc2lvbih4ZXZlbnQuc2Vy aWFsaXplX29iamVjdCgpKTsKLSAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICBtX3N5c19t ZW51LmFwcGVuZChpdGVtKTsKLSAjZW5kaWYKLUBAIC0xNTU3LDY3ICsxMzMxLDYgQEAgY2xhc3Mg UGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAg cHJpdmF0ZSBib29sIGVtb2ppZXJfZm9jdXNfY29tbWl0X3JlYWwoKSB7Ci0tICAgICAgICBpZiAo bV9lbW9qaWVyID09IG51bGwpCi0tICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0tICAgICAgICBz dHJpbmcgc2VsZWN0ZWRfc3RyaW5nID0gbV9lbW9qaWVyLmdldF9zZWxlY3RlZF9zdHJpbmcoKTsK LS0gICAgICAgIHN0cmluZyBwcmV2X2NvbnRleHRfcGF0aCA9IG1fZW1vamllci5nZXRfaW5wdXRf Y29udGV4dF9wYXRoKCk7Ci0tICAgICAgICBpZiAoc2VsZWN0ZWRfc3RyaW5nICE9IG51bGwgJiYK LS0gICAgICAgICAgICBwcmV2X2NvbnRleHRfcGF0aCAhPSAiIiAmJgotLSAgICAgICAgICAgIHBy ZXZfY29udGV4dF9wYXRoID09IG1fY3VycmVudF9jb250ZXh0X3BhdGgpIHsKLS0gICAgICAgICAg ICBJQnVzLlRleHQgdGV4dCA9IG5ldyBJQnVzLlRleHQuZnJvbV9zdHJpbmcoc2VsZWN0ZWRfc3Ry aW5nKTsKLS0gICAgICAgICAgICBjb21taXRfdGV4dCh0ZXh0KTsKLS0gICAgICAgICAgICBtX2Vt b2ppZXIgPSBudWxsOwotLSAgICAgICAgICAgIGJvb2wgaGFzX2Zhdm9yaXRlID0gZmFsc2U7Ci0t ICAgICAgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZmF2b3JpdGUgaW4gbV9lbW9qaWVy X2Zhdm9yaXRlcykgewotLSAgICAgICAgICAgICAgICBpZiAoZmF2b3JpdGUgPT0gc2VsZWN0ZWRf c3RyaW5nKSB7Ci0tICAgICAgICAgICAgICAgICAgICBoYXNfZmF2b3JpdGUgPSB0cnVlOwotLSAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAg ICB9Ci0tICAgICAgICAgICAgaWYgKCFoYXNfZmF2b3JpdGUpIHsKLS0gICAgICAgICAgICAgICAg bV9lbW9qaWVyX2Zhdm9yaXRlcyArPSBzZWxlY3RlZF9zdHJpbmc7Ci0tICAgICAgICAgICAgICAg IG1fc2V0dGluZ3NfZW1vamkuc2V0X3N0cnYoImZhdm9yaXRlcyIsIG1fZW1vamllcl9mYXZvcml0 ZXMpOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLS0gICAgICAg IH0KLS0KLS0gICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgfQotLQotLSAgICBwcml2YXRlIHZv aWQgZW1vamllcl9mb2N1c19jb21taXQoKSB7Ci0tICAgICAgICBpZiAobV9lbW9qaWVyID09IG51 bGwpCi0tICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgc3RyaW5nIHNlbGVjdGVkX3N0cmlu ZyA9IG1fZW1vamllci5nZXRfc2VsZWN0ZWRfc3RyaW5nKCk7Ci0tICAgICAgICBzdHJpbmcgcHJl dl9jb250ZXh0X3BhdGggPSBtX2Vtb2ppZXIuZ2V0X2lucHV0X2NvbnRleHRfcGF0aCgpOwotLSAg ICAgICAgaWYgKHNlbGVjdGVkX3N0cmluZyA9PSBudWxsICYmCi0tICAgICAgICAgICAgcHJldl9j b250ZXh0X3BhdGggIT0gIiIgJiYKLS0gICAgICAgICAgICBtX2Vtb2ppZXIuaXNfcnVubmluZygp KSB7Ci0tICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBHTGliLk1haW5Db250ZXh0LmRlZmF1bHQo KTsKLS0gICAgICAgICAgICBpZiAobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID4gMCAm JgotLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRfc291cmNlX2J5X2lkKG1fZW1vamllcl9m b2N1c19jb21taXRfdGV4dF9pZCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAhPSBudWxsKSB7 Ci0tICAgICAgICAgICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX2Vtb2ppZXJfZm9jdXNfY29t bWl0X3RleHRfaWQpOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBtX2Vtb2ppZXJfZm9j dXNfY29tbWl0X3RleHRfaWQgPSBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4gewotLSAgICAg ICAgICAgICAgICAvLyBmb2N1c19pbiBpcyBjb21taW5nIGJlZm9yZSBzd2l0Y2hlciByZXR1cm5z Ci0tICAgICAgICAgICAgICAgIGVtb2ppZXJfZm9jdXNfY29tbWl0X3JlYWwoKTsKLS0gICAgICAg ICAgICAgICAgbV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID0gLTE7Ci0tICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgICAgICAgICB9KTsKLS0gICAgICAgIH0gZWxzZSB7 Ci0tICAgICAgICAgICAgaWYgKGVtb2ppZXJfZm9jdXNfY29tbWl0X3JlYWwoKSkgewotLSAgICAg ICAgICAgICAgICB2YXIgY29udGV4dCA9IEdMaWIuTWFpbkNvbnRleHQuZGVmYXVsdCgpOwotLSAg ICAgICAgICAgICAgICBpZiAobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID4gMCAmJgot LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maW5kX3NvdXJjZV9ieV9pZChtX2Vtb2ppZXJf Zm9jdXNfY29tbWl0X3RleHRfaWQpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IG51 bGwpIHsKLS0gICAgICAgICAgICAgICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX2Vtb2ppZXJf Zm9jdXNfY29tbWl0X3RleHRfaWQpOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg ICAgIG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA9IC0xOwotLSAgICAgICAgICAgIH0K LS0gICAgICAgIH0KLS0gICAgfQotLQotICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBmb2N1c19p bihzdHJpbmcgaW5wdXRfY29udGV4dF9wYXRoKSB7Ci0gICAgICAgICBtX2N1cnJlbnRfY29udGV4 dF9wYXRoID0gaW5wdXRfY29udGV4dF9wYXRoOwotIAotQEAgLTE2MzIsNyArMTM0NSw2IEBAIGNs YXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgIG1fcmVhbF9jdXJy ZW50X2NvbnRleHRfcGF0aCA9IG1fY3VycmVudF9jb250ZXh0X3BhdGg7Ci0gICAgICAgICAgICAg bV9wcm9wZXJ0eV9wYW5lbC5mb2N1c19pbigpOwotICAgICAgICAgICAgIHRoaXMuc3dpdGNoZXJf Zm9jdXNfc2V0X2VuZ2luZSgpOwotLSAgICAgICAgICAgIHRoaXMuZW1vamllcl9mb2N1c19jb21t aXQoKTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChtX3VzZV9nbG9iYWxfZW5naW5lKQot ZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgYi91aS9ndGszL3BhbmVsYmlu ZGluZy52YWxhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjUwNzAwMTIx Ci0tLS0gL2Rldi9udWxsCi0rKysgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1AQCAtMCww ICsxLDMzNSBAQAotKy8qIHZpbTpzZXQgZXQgc3RzPTQgc3c9NDoKLSsgKgotKyAqIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0rICoKLSsgKiBDb3B5cmlnaHQoYykgMjAxOCBQZW5nIEh1YW5nIDxzaGF3 bi5wLmh1YW5nQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQoYykgMjAxOCBUYWthbyBGdWp3aWFy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICog TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQot KyAqIFVTQQotKyAqLwotKwotK2NsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNl IHsKLSsgICAgcHJpdmF0ZSBJQnVzLkJ1cyBtX2J1czsKLSsgICAgcHJpdmF0ZSBHTGliLlNldHRp bmdzIG1fc2V0dGluZ3NfcGFuZWwgPSBudWxsOwotKyAgICBwcml2YXRlIEdMaWIuU2V0dGluZ3Mg bV9zZXR0aW5nc19lbW9qaSA9IG51bGw7Ci0rICAgIHByaXZhdGUgc3RyaW5nIG1fY3VycmVudF9j b250ZXh0X3BhdGggPSAiIjsKLSsgICAgcHJpdmF0ZSBzdHJpbmcgbV9yZWFsX2N1cnJlbnRfY29u dGV4dF9wYXRoID0gIiI7Ci0rICAgIHByaXZhdGUgSUJ1c0Vtb2ppZXI/IG1fZW1vamllcjsKLSsg ICAgcHJpdmF0ZSB1aW50IG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZDsKLSsgICAgcHJpdmF0 ZSB1aW50IG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZDsKLSsgICAgcHJpdmF0ZSBzdHJp bmdbXSBtX2Vtb2ppZXJfZmF2b3JpdGVzID0ge307Ci0rICAgIHByaXZhdGUgR3RrLkNzc1Byb3Zp ZGVyIG1fY3NzX3Byb3ZpZGVyOwotKyAgICBwcml2YXRlIGNvbnN0IHVpbnQgUFJFTE9BRF9FTkdJ TkVTX0RFTEFZX1RJTUUgPSAzMDAwMDsKLSsgICAgcHJpdmF0ZSBHTGliLkxpc3Q8QmluZGluZ0Nv bW1vbi5LZXliaW5kaW5nPiBtX2tleWJpbmRpbmdzID0KLSsgICAgICAgICAgICBuZXcgR0xpYi5M aXN0PEJpbmRpbmdDb21tb24uS2V5YmluZGluZz4oKTsKLSsKLSsgICAgcHVibGljIFBhbmVsQmlu ZGluZyhJQnVzLkJ1cyBidXMpIHsKLSsgICAgICAgIEdMaWIuYXNzZXJ0KGJ1cy5pc19jb25uZWN0 ZWQoKSk7Ci0rICAgICAgICAvLyBDaGFpbiB1cCBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yCi0rICAg ICAgICBHTGliLk9iamVjdChjb25uZWN0aW9uIDogYnVzLmdldF9jb25uZWN0aW9uKCksCi0rICAg ICAgICAgICAgICAgICAgICBvYmplY3RfcGF0aCA6IElCdXMuUEFUSF9QQU5FTF9FWFRFTlNJT04p OwotKwotKyAgICAgICAgbV9idXMgPSBidXM7Ci0rCi0rICAgICAgICBpbml0X3NldHRpbmdzKCk7 Ci0rCi0rICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7Ci0rICAgIH0KLSsKLSsKLSsgICAg flBhbmVsQmluZGluZygpIHsKLSsgICAgICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRjaF9z aG9ydGN1dCgKLSsgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBl LkFOWSwKLSsgICAgICAgICAgICAgICAgbV9rZXliaW5kaW5ncyk7Ci0rICAgIH0KLSsKLSsKLSsg ICAgcHJpdmF0ZSB2b2lkIGluaXRfc2V0dGluZ3MoKSB7Ci0rICAgICAgICBtX3NldHRpbmdzX3Bh bmVsID0gbmV3IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsIik7Ci0r ICAgICAgICBtX3NldHRpbmdzX2Vtb2ppID0gbmV3IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVz a3RvcC5pYnVzLnBhbmVsLmVtb2ppIik7Ci0rCi0rICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNo YW5nZWRbImN1c3RvbS1mb250Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0rICAgICAgICAgICAgICAg IEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250KG1fc2V0dGluZ3NfcGFuZWwsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZiBtX2Nz c19wcm92aWRlcik7Ci0rICAgICAgICB9KTsKLSsKLSsgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwu Y2hhbmdlZFsidXNlLWN1c3RvbS1mb250Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0rICAgICAgICAg ICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250KG1fc2V0dGluZ3NfcGFuZWwsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3Nf ZW1vamksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl ZiBtX2Nzc19wcm92aWRlcik7Ci0rICAgICAgICB9KTsKLSsKLSsgICAgICAgIG1fc2V0dGluZ3Nf ZW1vamkuY2hhbmdlZFsiaG90a2V5Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0rICAgICAgICAgICAg ICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRjaF9zaG9ydGN1dCgKLSsgICAgICAgICAgICAg ICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUuRU1PSklfVFlQSU5HLAot KyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5YmluZGluZ3MpOwotKyAgICAgICAgICAgICAg ICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7Ci0rICAgICAgICB9KTsKLSsKLSsgICAgICAgIG1fc2V0 dGluZ3NfZW1vamkuY2hhbmdlZFsiZm9udCJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAg ICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWYgbV9jc3NfcHJvdmlkZXIpOwotKyAgICAgICAgfSk7Ci0rCi0rICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLmNoYW5nZWRbImZhdm9yaXRlcyJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAg ICAgICAgICBzZXRfZW1vamlfZmF2b3JpdGVzKCk7Ci0rICAgICAgICB9KTsKLSsKLSsgICAgICAg IG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsiZmF2b3JpdGUtYW5ub3RhdGlvbnMiXS5jb25uZWN0 KChrZXkpID0+IHsKLSsgICAgICAgICAgICAgICAgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpOwotKyAg ICAgICAgfSk7Ci0rCi0rICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImxhbmciXS5j b25uZWN0KChrZXkpID0+IHsKLSsgICAgICAgICAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsKLSsg ICAgICAgIH0pOwotKwotKyAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJoYXMtcGFy dGlhbC1tYXRjaCJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAgICAgICAgICBzZXRfZW1v amlfcGFydGlhbF9tYXRjaCgpOwotKyAgICAgICAgfSk7Ci0rCi0rICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLmNoYW5nZWRbInBhcnRpYWwtbWF0Y2gtbGVuZ3RoIl0uY29ubmVjdCgoa2V5KSA9PiB7 Ci0rICAgICAgICAgICAgICAgIHNldF9lbW9qaV9wYXJ0aWFsX21hdGNoKCk7Ci0rICAgICAgICB9 KTsKLSsKLSsgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsicGFydGlhbC1tYXRjaC1j b25kaXRpb24iXS5jb25uZWN0KChrZXkpID0+IHsKLSsgICAgICAgICAgICAgICAgc2V0X2Vtb2pp X3BhcnRpYWxfbWF0Y2goKTsKLSsgICAgICAgIH0pOwotKyAgICB9Ci0rCi0rCi0rICAgIHByaXZh dGUgdm9pZCBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCkgewotKyNpZiBFTU9KSV9ESUNUCi0rICAgICAg ICBzdHJpbmdbXSBhY2NlbGVyYXRvcnMgPSBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJob3Rr ZXkiKTsKLSsKLSsgICAgICAgIHZhciBrZXliaW5kaW5nX21hbmFnZXIgPSBLZXliaW5kaW5nTWFu YWdlci5nZXRfaW5zdGFuY2UoKTsKLSsKLSsgICAgICAgIGZvcmVhY2ggKHZhciBhY2NlbGVyYXRv ciBpbiBhY2NlbGVyYXRvcnMpIHsKLSsgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLmtleWJpbmRp bmdfbWFuYWdlcl9iaW5kKAotKyAgICAgICAgICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2Vy LAotKyAgICAgICAgICAgICAgICAgICAgcmVmIG1fa2V5YmluZGluZ3MsCi0rICAgICAgICAgICAg ICAgICAgICBhY2NlbGVyYXRvciwKLSsgICAgICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24u S2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJTkcsCi0rICAgICAgICAgICAgICAgICAgICBoYW5k bGVfZW1vamlfdHlwaW5nLAotKyAgICAgICAgICAgICAgICAgICAgbnVsbCk7Ci0rICAgICAgICB9 Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2b2lkIHNldF9lbW9qaV9mYXZv cml0ZXMoKSB7Ci0rICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzID0gbV9zZXR0aW5nc19lbW9q aS5nZXRfc3RydigiZmF2b3JpdGVzIik7Ci0rICAgICAgICBJQnVzRW1vamllci5zZXRfZmF2b3Jp dGVzKAotKyAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzLAotKyAgICAgICAgICAg ICAgICBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJmYXZvcml0ZS1hbm5vdGF0aW9ucyIpKTsK LSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2ppX2xhbmcoKSB7Ci0rICAg ICAgICBpZiAobV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkID4gMCkgewotKyAgICAgICAgICAg IEdMaWIuU291cmNlLnJlbW92ZShtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQpOwotKyAgICAg ICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IDA7Ci0rICAgICAgICB9Ci0rICAg ICAgICBtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSBHTGliLklkbGUuYWRkKCgpID0+IHsK LSsgICAgICAgICAgICBJQnVzRW1vamllci5zZXRfYW5ub3RhdGlvbl9sYW5nKAotKyAgICAgICAg ICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJsYW5nIikpOwotKyAgICAg ICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IDA7Ci0rICAgICAgICAgICAgSUJ1 c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7 Ci0rICAgICAgICB9KTsKLSsgICAgfQotKwotKwotKyAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2pp X3BhcnRpYWxfbWF0Y2goKSB7Ci0rICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9tYXRj aCgKLSsgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfYm9vbGVhbigiaGFzLXBh cnRpYWwtbWF0Y2giKSk7Ci0rICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9tYXRjaF9s ZW5ndGgoCi0rICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X2ludCgicGFydGlh bC1tYXRjaC1sZW5ndGgiKSk7Ci0rICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9tYXRj aF9jb25kaXRpb24oCi0rICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X2ludCgi cGFydGlhbC1tYXRjaC1jb25kaXRpb24iKSk7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIHZv aWQgbG9hZF9zZXR0aW5ncygpIHsKLSsgICAgICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRj aF9zaG9ydGN1dChCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUuQU5ZLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5YmluZGluZ3MpOwotKyAg ICAgICAgYmluZF9lbW9qaV9zaG9ydGN1dCgpOwotKyAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRf Y3VzdG9tX2ZvbnQobV9zZXR0aW5nc19wYW5lbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOwotKyAgICAgICAgc2V0X2Vtb2ppX2Zh dm9yaXRlcygpOwotKyAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsKLSsgICAgICAgIHNldF9lbW9q aV9wYXJ0aWFsX21hdGNoKCk7Ci0rICAgIH0KLSsKLSsKLSsgICAgLyoqCi0rICAgICAqIGRpc2Nv bm5lY3Rfc2lnbmFsczoKLSsgICAgICoKLSsgICAgICogQ2FsbCB0aGlzIEFQSSBiZWZvcmUgbV9w YW5lbCA9IG51bGwgc28gdGhhdCB0aGUgcmVmX2NvdW50IGJlY29tZXMgMAotKyAgICAgKi8KLSsg ICAgcHVibGljIHZvaWQgZGlzY29ubmVjdF9zaWduYWxzKCkgewotKyAgICAgICAgaWYgKG1fZW1v amllcl9zZXRfZW1vamlfbGFuZ19pZCA+IDApIHsKLSsgICAgICAgICAgICBHTGliLlNvdXJjZS5y ZW1vdmUobV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkKTsKLSsgICAgICAgICAgICBtX2Vtb2pp ZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAg IHByaXZhdGUgdm9pZCBzaG93X2Vtb2ppZXIoR2RrLkV2ZW50IGV2ZW50KSB7Ci0rICAgICAgICBt X2Vtb2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIoKTsKLSsgICAgICAgIHN0cmluZyBlbW9qaSA9IG1f ZW1vamllci5ydW4obV9yZWFsX2N1cnJlbnRfY29udGV4dF9wYXRoLCBldmVudCk7Ci0rICAgICAg ICBpZiAoZW1vamkgPT0gbnVsbCkgewotKyAgICAgICAgICAgIG1fZW1vamllciA9IG51bGw7Ci0r ICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgdGhpcy5lbW9qaWVyX2Zv Y3VzX2NvbW1pdCgpOwotKyAgICB9Ci0rCi0rCi0rICAgIHByaXZhdGUgdm9pZCBoYW5kbGVfZW1v amlfdHlwaW5nKEdkay5FdmVudCBldmVudCkgewotKyAgICAgICAgaWYgKG1fZW1vamllciAhPSBu dWxsICYmIG1fZW1vamllci5pc19ydW5uaW5nKCkpIHsKLSsgICAgICAgICAgICBtX2Vtb2ppZXIu cHJlc2VudF9jZW50cmFsaXplKGV2ZW50KTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAg ICB9Ci0rICAgICAgICBzaG93X2Vtb2ppZXIoZXZlbnQpOwotKyAgICB9Ci0rCi0rCi0rICAgIHBy aXZhdGUgYm9vbCBlbW9qaWVyX2ZvY3VzX2NvbW1pdF9yZWFsKCkgewotKyAgICAgICAgaWYgKG1f ZW1vamllciA9PSBudWxsKQotKyAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgc3Ry aW5nIHNlbGVjdGVkX3N0cmluZyA9IG1fZW1vamllci5nZXRfc2VsZWN0ZWRfc3RyaW5nKCk7Ci0r ICAgICAgICBzdHJpbmcgcHJldl9jb250ZXh0X3BhdGggPSBtX2Vtb2ppZXIuZ2V0X2lucHV0X2Nv bnRleHRfcGF0aCgpOwotKyAgICAgICAgaWYgKHNlbGVjdGVkX3N0cmluZyAhPSBudWxsICYmCi0r ICAgICAgICAgICAgcHJldl9jb250ZXh0X3BhdGggIT0gIiIgJiYKLSsgICAgICAgICAgICBwcmV2 X2NvbnRleHRfcGF0aCA9PSBtX2N1cnJlbnRfY29udGV4dF9wYXRoKSB7Ci0rICAgICAgICAgICAg SUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKHNlbGVjdGVkX3N0cmlu Zyk7Ci0rICAgICAgICAgICAgY29tbWl0X3RleHQodGV4dCk7Ci0rICAgICAgICAgICAgbV9lbW9q aWVyID0gbnVsbDsKLSsgICAgICAgICAgICBib29sIGhhc19mYXZvcml0ZSA9IGZhbHNlOwotKyAg ICAgICAgICAgIGZvcmVhY2ggKHVub3duZWQgc3RyaW5nIGZhdm9yaXRlIGluIG1fZW1vamllcl9m YXZvcml0ZXMpIHsKLSsgICAgICAgICAgICAgICAgaWYgKGZhdm9yaXRlID09IHNlbGVjdGVkX3N0 cmluZykgewotKyAgICAgICAgICAgICAgICAgICAgaGFzX2Zhdm9yaXRlID0gdHJ1ZTsKLSsgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgICAgIGlmICghaGFzX2Zhdm9yaXRlKSB7Ci0rICAgICAgICAgICAgICAgIG1f ZW1vamllcl9mYXZvcml0ZXMgKz0gc2VsZWN0ZWRfc3RyaW5nOwotKyAgICAgICAgICAgICAgICBt X3NldHRpbmdzX2Vtb2ppLnNldF9zdHJ2KCJmYXZvcml0ZXMiLCBtX2Vtb2ppZXJfZmF2b3JpdGVz KTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHJpdmF0ZSB2 b2lkIGVtb2ppZXJfZm9jdXNfY29tbWl0KCkgewotKyAgICAgICAgaWYgKG1fZW1vamllciA9PSBu dWxsKQotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIHN0cmluZyBzZWxlY3RlZF9zdHJp bmcgPSBtX2Vtb2ppZXIuZ2V0X3NlbGVjdGVkX3N0cmluZygpOwotKyAgICAgICAgc3RyaW5nIHBy ZXZfY29udGV4dF9wYXRoID0gbV9lbW9qaWVyLmdldF9pbnB1dF9jb250ZXh0X3BhdGgoKTsKLSsg ICAgICAgIGlmIChzZWxlY3RlZF9zdHJpbmcgPT0gbnVsbCAmJgotKyAgICAgICAgICAgIHByZXZf Y29udGV4dF9wYXRoICE9ICIiICYmCi0rICAgICAgICAgICAgbV9lbW9qaWVyLmlzX3J1bm5pbmco KSkgewotKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0 KCk7Ci0rICAgICAgICAgICAgaWYgKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA+IDAg JiYKLSsgICAgICAgICAgICAgICAgY29udGV4dC5maW5kX3NvdXJjZV9ieV9pZChtX2Vtb2ppZXJf Zm9jdXNfY29tbWl0X3RleHRfaWQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkg ewotKyAgICAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9lbW9qaWVyX2ZvY3VzX2Nv bW1pdF90ZXh0X2lkKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgbV9lbW9qaWVyX2Zv Y3VzX2NvbW1pdF90ZXh0X2lkID0gR0xpYi5UaW1lb3V0LmFkZCgxMDAsICgpID0+IHsKLSsgICAg ICAgICAgICAgICAgLy8gZm9jdXNfaW4gaXMgY29tbWluZyBiZWZvcmUgc3dpdGNoZXIgcmV0dXJu cwotKyAgICAgICAgICAgICAgICBlbW9qaWVyX2ZvY3VzX2NvbW1pdF9yZWFsKCk7Ci0rICAgICAg ICAgICAgICAgIG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA9IC0xOwotKyAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICAgICAgfSk7Ci0rICAgICAgICB9IGVsc2Ug ewotKyAgICAgICAgICAgIGlmIChlbW9qaWVyX2ZvY3VzX2NvbW1pdF9yZWFsKCkpIHsKLSsgICAg ICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBHTGliLk1haW5Db250ZXh0LmRlZmF1bHQoKTsKLSsg ICAgICAgICAgICAgICAgaWYgKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA+IDAgJiYK LSsgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmluZF9zb3VyY2VfYnlfaWQobV9lbW9qaWVy X2ZvY3VzX2NvbW1pdF90ZXh0X2lkKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBu dWxsKSB7Ci0rICAgICAgICAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9lbW9qaWVy X2ZvY3VzX2NvbW1pdF90ZXh0X2lkKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAg ICAgICBtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPSAtMTsKLSsgICAgICAgICAgICB9 Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgZm9j dXNfaW4oc3RyaW5nIGlucHV0X2NvbnRleHRfcGF0aCkgewotKyAgICAgICAgbV9jdXJyZW50X2Nv bnRleHRfcGF0aCA9IGlucHV0X2NvbnRleHRfcGF0aDsKLSsKLSsgICAgICAgIC8qICdmYWtlJyBp bnB1dCBjb250ZXh0IGlzIG5hbWVkIGFzIAotKyAgICAgICAgICogJy9vcmcvZnJlZWRlc2t0b3Av SUJ1cy9JbnB1dENvbnRleHRfMScgYW5kIGFsd2F5cyBzZW5kIGluCi0rICAgICAgICAgKiBmb2N1 cy1vdXQgZXZlbnRzIGJ5IGlidXMtZGFlbW9uIGZvciB0aGUgZ2xvYmFsIGVuZ2luZSBtb2RlLgot KyAgICAgICAgICogTm93IGlidXMtZGFlbW9uIGFzc3VtZXMgdG8gYWx3YXlzIHVzZSB0aGUgZ2xv YmFsIGVuZ2luZS4KLSsgICAgICAgICAqIEJ1dCB0aGlzIGV2ZW50IHNob3VsZCBub3QgYmUgdXNl ZCBmb3IgbW9kYWwgZGlhbG9ncwotKyAgICAgICAgICogc3VjaCBhcyBTd2l0Y2hlci4KLSsgICAg ICAgICAqLwotKyAgICAgICAgaWYgKCFpbnB1dF9jb250ZXh0X3BhdGguaGFzX3N1ZmZpeCgiSW5w dXRDb250ZXh0XzEiKSkgewotKyAgICAgICAgICAgIG1fcmVhbF9jdXJyZW50X2NvbnRleHRfcGF0 aCA9IG1fY3VycmVudF9jb250ZXh0X3BhdGg7Ci0rICAgICAgICAgICAgdGhpcy5lbW9qaWVyX2Zv Y3VzX2NvbW1pdCgpOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAgIHB1YmxpYyBvdmVy cmlkZSB2b2lkIGZvY3VzX291dChzdHJpbmcgaW5wdXRfY29udGV4dF9wYXRoKSB7Ci0rICAgICAg ICBtX2N1cnJlbnRfY29udGV4dF9wYXRoID0gIiI7Ci0rICAgIH0KLSsKLSsKLSsgICAgcHVibGlj IG92ZXJyaWRlIHZvaWQgcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkKEdMaWIuVmFyaWFudCBkYXRh KSB7Ci0rICAgICAgICBJQnVzLlhFdmVudD8geGV2ZW50ID0gSUJ1cy5TZXJpYWxpemFibGUuZGVz ZXJpYWxpemVfb2JqZWN0KGRhdGEpCi0rICAgICAgICAgICAgICAgIGFzIElCdXMuWEV2ZW50Owot KyAgICAgICAgaWYgKHhldmVudCA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgd2FybmluZyAoIkZh aWxlZCB0byBkZXNlcmlhbGl6ZSBJQnVzWEV2ZW50Iik7Ci0rICAgICAgICAgICAgcmV0dXJuOwot KyAgICAgICAgfQotKyAgICAgICAgaWYgKHhldmVudC5nZXRfcHVycG9zZSgpICE9ICJlbW9qaSIp IHsKLSsgICAgICAgICAgICBzdHJpbmcgZm9ybWF0ID0gIlRoZSBwdXJwb3NlICVzIGlzIG5vdCBp bXBsZW1lbnRlZCBpbiBQYW5lbEV4dGVuc2lvbiI7Ci0rICAgICAgICAgICAgd2FybmluZyAoZm9y bWF0LnByaW50Zih4ZXZlbnQuZ2V0X3B1cnBvc2UoKSkpOwotKyAgICAgICAgICAgIHJldHVybjsK LSsgICAgICAgIH0KLSsgICAgICAgIEdkay5FdmVudFR5cGUgZXZlbnRfdHlwZTsKLSsgICAgICAg IGlmICh4ZXZlbnQuZ2V0X2V2ZW50X3R5cGUoKSA9PSBJQnVzLlhFdmVudFR5cGUuS0VZX1BSRVNT KSB7Ci0rICAgICAgICAgICAgZXZlbnRfdHlwZSA9IEdkay5FdmVudFR5cGUuS0VZX1BSRVNTOwot KyAgICAgICAgfSBlbHNlIGlmICh4ZXZlbnQuZ2V0X2V2ZW50X3R5cGUoKSA9PSBJQnVzLlhFdmVu dFR5cGUuS0VZX1JFTEVBU0UpIHsKLSsgICAgICAgICAgICBldmVudF90eXBlID0gR2RrLkV2ZW50 VHlwZS5LRVlfUkVMRUFTRTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgd2Fybmlu ZyAoIk5vdCBzdXBwb3J0ZWQgdHlwZSAlZCIucHJpbnRmKHhldmVudC5nZXRfZXZlbnRfdHlwZSgp KSk7Ci0rICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKyAgICAgICAgR2RrLkV2ZW50 IGV2ZW50ID0gbmV3IEdkay5FdmVudChldmVudF90eXBlKTsKLSsgICAgICAgIGV2ZW50LmtleS50 aW1lID0geGV2ZW50LmdldF90aW1lKCk7Ci0rICAgICAgICBHZGsuRGlzcGxheT8gZGlzcGxheSA9 IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7Ci0rICAgICAgICBYLldpbmRvdyB4aWQgPSB4ZXZl bnQuZ2V0X3dpbmRvdygpOwotKyAgICAgICAgR2RrLlgxMS5XaW5kb3cgd2luZG93OwotKyAgICAg ICAgd2luZG93ID0gR2RrLlgxMS5XaW5kb3cubG9va3VwX2Zvcl9kaXNwbGF5KAotKyAgICAgICAg ICAgICAgICBkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwgeGlkKTsKLSsgICAgICAgIGlmICh3 aW5kb3cgIT0gbnVsbCkgewotKyAgICAgICAgICAgIGV2ZW50LmtleS53aW5kb3cgPSB3aW5kb3c7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIHdpbmRvdyA9IG5ldyBHZGsuWDExLldp bmRvdy5mb3JlaWduX2Zvcl9kaXNwbGF5KAotKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBh cyBHZGsuWDExLkRpc3BsYXksIHhpZCk7Ci0rICAgICAgICAgICAgZXZlbnQua2V5LndpbmRvdyA9 IHdpbmRvdzsKLSsgICAgICAgIH0KLSsgICAgICAgIGhhbmRsZV9lbW9qaV90eXBpbmcoZXZlbnQp OwotKyAgICB9Ci0rfQotLS0gCi0yLjE0LjMKLQotRnJvbSAzNjY5NjNkNTdkMTQ2ODkxNDYxMWM3 MTkyOWNjNjRjODNiZTlhZmZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYt OD9xP1Bpb3RyPTIwRHI9QzQ9ODVnPz0gPHBpb3RyZHJhZ0BnbWFpbC5jb20+Ci1EYXRlOiBUdWUs IDIwIEZlYiAyMDE4IDE4OjU3OjMyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0eXBvcyBp biB0cmFuc2xhdGFibGUgc3RyaW5ncwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzE5ODMKLVI9U2hhd24u UC5IdWFuZ0BnbWFpbC5jb20KLQotUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNw b3QuY29tLzMzMzY3MDA0MwotCi1QYXRjaCBmcm9tIFBpb3RyIERyxIVnIDxwaW90cmRyYWdAZ21h aWwuY29tPi4KLS0tLQotIGRhdGEvaWJ1cy5zY2hlbWFzLmluICAgIHwgNiArKystLS0KLSB1aS9n dGszL2Vtb2ppZXJhcHAudmFsYSB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvaWJ1cy5zY2hlbWFzLmlu IGIvZGF0YS9pYnVzLnNjaGVtYXMuaW4KLWluZGV4IDI3ODM2MmQ3Li40NTIzY2NjNCAxMDA2NDQK LS0tLSBhL2RhdGEvaWJ1cy5zY2hlbWFzLmluCi0rKysgYi9kYXRhL2lidXMuc2NoZW1hcy5pbgot QEAgLTY0LDcgKzY0LDcgQEAKLSAgICAgICA8ZGVmYXVsdD5bYXJhLGJnLGN6LGRldixncixndXIs aW4sanAoa2FuYSksbWFsLG1rZCxydSx1YV08L2RlZmF1bHQ+Ci0gICAgICAgPGxvY2FsZSBuYW1l PSJDIj4KLSAgICAgICAgIDxzaG9ydD5MYXRpbiBsYXlvdXRzIHdoaWNoIGhhdmUgbm8gQVNDSUk8 L3Nob3J0PgotLSAgICAgICAgICAgPGxvbmc+VVMgbGF5b3V0IGlzIGFwcGVuZGVkIHRvIHRoZSBs YXRpbiBsYXlvdXRzLiB2YXJpYW50IGNhbiBiZQotKyAgICAgICAgICAgPGxvbmc+VVMgbGF5b3V0 IGlzIGFwcGVuZGVkIHRvIHRoZSBMYXRpbiBsYXlvdXRzLiB2YXJpYW50IGNhbiBiZQotICAgICAg ICAgICAgICAgICAgb21pdHRlZC4KLSAgICAgICAgICAgIDwvbG9uZz4KLSAgICAgICA8L2xvY2Fs ZT4KLUBAIC0yOTksNyArMjk5LDcgQEAKLSAgICAgICAgICAgICAgICAgICBhbmQgYmx1ZSwgMy4g YSBSR0IgY29sb3IgaW4gZm9ybSAncmdiKHIsZyxiKScgb3IKLSAgICAgICAgICAgICAgICAgICA0 LiBhIFJHQkEgY29sb3IgaW4gZm9ybSAncmdiYShyLGcsYixhKScgd2hlcmUgJ3InLAotICAgICAg ICAgICAgICAgICAgICdnJywgYW5kICdiJyBhcmUgZWl0aGVyIGludGVnZXJzIGluIHRoZSByYW5n ZSAwIHRvIDI1NQotLSAgICAgICAgICAgICAgICAgIG9yIHByZWNlbnRhZ2UgdmFsdWVzIGluIHRo ZSByYW5nZSAwJSB0byAxMDAlLCBhbmQKLSsgICAgICAgICAgICAgICAgICBvciBwZXJjZW50YWdl IHZhbHVlcyBpbiB0aGUgcmFuZ2UgMCUgdG8gMTAwJSwgYW5kCi0gICAgICAgICAgICAgICAgICAg J2EnIGlzIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaW4gdGhlIHJhbmdlIDAgdG8gMQotICAgICAg ICAgICAgICAgICAgIG9mIHRoZSBhbHBoYS48L2xvbmc+Ci0gICAgICAgPC9sb2NhbGU+Ci1AQCAt MzczLDcgKzM3Myw3IEBACi0gICAgICAgPGRlZmF1bHQ+TW9ub3NwYWNlIDE2PC9kZWZhdWx0Pgot ICAgICAgIDxsb2NhbGUgbmFtZT0iQyI+Ci0gICAgICAgICA8c2hvcnQ+Q3VzdG9tIGZvbnQ8L3No b3J0PgotLQkgICAgPGxvbmc+Q3VzdG9tIGZvbnQgbmFtZSBmb3IgZW1vamkgY2hyYWN0ZXJzIG9u IGVtb2ppIGRpYWxvZzwvbG9uZz4KLSsJICAgIDxsb25nPkN1c3RvbSBmb250IG5hbWUgZm9yIGVt b2ppIGNoYXJhY3RlcnMgb24gZW1vamkgZGlhbG9nPC9sb25nPgotICAgICAgIDwvbG9jYWxlPgot ICAgICA8L3NjaGVtYT4KLSAgICAgPHNjaGVtYT4KLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2pp ZXJhcHAudmFsYSBiL3VpL2d0azMvZW1vamllcmFwcC52YWxhCi1pbmRleCBkODE2MzUyZS4uZWZl ZGYzNDQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQotKysrIGIvdWkvZ3Rr My9lbW9qaWVyYXBwLnZhbGEKLUBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYyBjbGFzcyBFbW9qaUFw cGxpY2F0aW9uIDogQXBwbGljYXRpb24gewotICAgICAgICAgICAgICAgLyogVFJBTlNMQVRPUlM6 ICJGT05UIiBzaG91bGQgYmUgY2FwaXRhbCBhbmQgdHJhbnNsYXRhYmxlLgotICAgICAgICAgICAg ICAgICogSXQncyB1c2VkIGZvciBhbiBhcmd1bWVudCBjb21tYW5kIC0tZm9udD1GT05UCi0gICAg ICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgIE5fKCJcIkZPTlRcIiBmb3IgZW1vamkgY2hy YWN0ZXJzIG9uIGVtb2ppIGRpYWxvZyIpLAotKyAgICAgICAgICAgICAgTl8oIlwiRk9OVFwiIGZv ciBlbW9qaSBjaGFyYWN0ZXJzIG9uIGVtb2ppIGRpYWxvZyIpLAotICAgICAgICAgICAgICAgTl8o IkZPTlQiKSB9LAotICAgICAgICAgICAgIHsgImxhbmciLCAwLCAwLCBPcHRpb25BcmcuU1RSSU5H LCBvdXQgYW5ub3RhdGlvbl9sYW5nLAotICAgICAgICAgICAgICAgLyogVFJBTlNMQVRPUlM6ICJM QU5HIiBzaG91bGQgYmUgY2FwaXRhbCBhbmQgdHJhbnNsYXRhYmxlLgotLS0gCi0yLjE0LjMKLQot RnJvbSBkMWViYjNkNzdlYmZlOGY1ODE4ODI2MWMzODNkODEyMmUyMTI1ZmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgotRGF0ZTogV2VkLCAyMSBGZWIgMjAxOCAxMjoxMjoxMSArMDkwMAotU3ViamVjdDogW1BBVENI XSB1aS9ndGszOiBTaG93IGNvZGUgcG9pbnRzIG9uIFVuaWNvZGUgbmFtZSBsaXN0IGRpYWxvZwot Ci1UaGUgY29kZSBwb2ludHMgYXJlIHVzZWZ1bCBzaW5jZSB0aGUgbGlzdCBoYXMgbWFueSBuYW1l cy4KLQotUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbQotCi1SZXZpZXcgVVJMOiBodHRwczovL2Nv ZGVyZXZpZXcuYXBwc3BvdC5jb20vMzQwNzcwMDQzCi0tLS0KLSB1aS9ndGszL2Vtb2ppZXIudmFs YSB8IDE0ICsrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBiL3Vp L2d0azMvZW1vamllci52YWxhCi1pbmRleCAwYmYzNGRhOC4uYzg1ZGZhODYgMTAwNjQ0Ci0tLS0g YS91aS9ndGszL2Vtb2ppZXIudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLUBAIC0x OTgsNyArMTk4LDggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9u V2luZG93IHsKLSAgICAgcHJpdmF0ZSBjbGFzcyBFUGFkZGVkTGFiZWxCb3ggOiBHdGsuQm94IHsK LSAgICAgICAgIHB1YmxpYyBFUGFkZGVkTGFiZWxCb3goc3RyaW5nICAgICAgICAgIHRleHQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbiAgICAgICBhbGlnbiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVsRGlyZWN0aW9uIGRpcmVjdGlvbj1U cmF2ZWxEaXJlY3Rpb24uTk9ORSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU cmF2ZWxEaXJlY3Rpb24gZGlyZWN0aW9uPVRyYXZlbERpcmVjdGlvbi5OT05FLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc/ICAgICAgICAgY2FwdGlvbj1udWxsKSB7Ci0g ICAgICAgICAgICAgR0xpYi5PYmplY3QoCi0gICAgICAgICAgICAgICAgIG5hbWUgOiAiSUJ1c0Vt b2ppZXJQYWRkZWRMYWJlbEJveCIsCi0gICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uIDogR3Rr Lk9yaWVudGF0aW9uLkhPUklaT05UQUwsCi1AQCAtMjE4LDYgKzIxOSwxMSBAQCBwdWJsaWMgY2xh c3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICBFUGFkZGVkTGFiZWwgbGFiZWwgPSBuZXcgRVBhZGRlZExhYmVsKHRleHQs IGFsaWduKTsKLSAgICAgICAgICAgICBwYWNrX3N0YXJ0KGxhYmVsLCB0cnVlLCB0cnVlLCAwKTsK LSsgICAgICAgICAgICBpZiAoY2FwdGlvbiAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgICAgIEVQ YWRkZWRMYWJlbCBsYWJlbF9yID0gbmV3IEVQYWRkZWRMYWJlbChjYXB0aW9uLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFsaWdu LkVORCk7Ci0rICAgICAgICAgICAgICAgIHBhY2tfZW5kKGxhYmVsX3IsIHRydWUsIHRydWUsIDAp OwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfQotICAgICBwcml2YXRlIGNsYXNz IEVUaXRsZUxhYmVsQm94IDogR3RrLkhlYWRlckJhciB7Ci1AQCAtOTc5LDkgKzk4NSwxMyBAQCBw dWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAg ICAgdWludCBuID0gMDsKLSAgICAgICAgIGZvcmVhY2ggKHVub3duZWQgSUJ1cy5Vbmljb2RlQmxv Y2sgYmxvY2sgaW4gbV91bmljb2RlX2Jsb2NrX2xpc3QpIHsKLSAgICAgICAgICAgICBzdHJpbmcg bmFtZSA9IGJsb2NrLmdldF9uYW1lKCk7Ci0rICAgICAgICAgICAgc3RyaW5nIGNhcHRpb24gPSAi VSslMDhYIi5wcmludGYoYmxvY2suZ2V0X3N0YXJ0KCkpOwotICAgICAgICAgICAgIEVCb3hSb3cg cm93ID0gbmV3IEVCb3hSb3cobmFtZSk7Ci0gICAgICAgICAgICAgRVBhZGRlZExhYmVsQm94IHdp ZGdldCA9Ci0tICAgICAgICAgICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KF8obmFtZSks IEd0ay5BbGlnbi5DRU5URVIpOwotKyAgICAgICAgICAgICAgICAgICAgbmV3IEVQYWRkZWRMYWJl bEJveChfKG5hbWUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH dGsuQWxpZ24uQ0VOVEVSLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUcmF2ZWxEaXJlY3Rpb24uTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2FwdGlvbik7Ci0gICAgICAgICAgICAgcm93LmFkZCh3aWRnZXQpOwotICAgICAg ICAgICAgIG1fbGlzdF9ib3guYWRkKHJvdyk7Ci0gICAgICAgICAgICAgaWYgKG4rKyA9PSBtX2Nh dGVnb3J5X2FjdGl2ZV9pbmRleCkgewotLS0gCi0yLjE0LjMKLQotRnJvbSBmYzU0YjBjMDUxYzJl YjRhMmMxZjgzNmIxNDE1ZGVmMDAzMTRjZmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMSBG ZWIgMjAxOCAxMjoxNzozMSArMDkwMAotU3ViamVjdDogW1BBVENIXSB1aS9ndGszOiBMb2FkIFVu aWNvZGUgZGF0YSB3aGVuIG9wZW4gdGhlIGRpYWxvZyBieQotIGRlZmF1bHQKLQotVGhlIGVtb2pp IGRhdGEgcmVxdWlyZXMgYWJvdXQgMTBNQiBhbmQgdGhlIFVuaWNvZGUgZGF0YSByZXF1aXJlcyBh Ym91dCAxNU1CLgotTm93IHRoZSBlbW9qaSBkYXRhIGlzIGxvYWRlZCBhdCB0aGUgdGltZSBvZiBz dGFydHVwIGFuZCB0aGUgVW5pY29kZSBkYXRhCi1pcyBsb2FkZWQgaWYgdXNlcnMgb3BlbiB0aGUg ZGlhbG9nIGF0IHRoZSBiZWdpbm5pbmcuCi1UaGUgc2V0dGluZ3MgY2FuIGJlIGN1c3RvbWl6ZWQg d2l0aCBnc2V0dGluZ3MgY29tbWFuZCBhbmQgdGhlIGtleXMKLW9mICdsb2FkLWVtb2ppLWF0LXN0 YXJ0dXAnIGFuZCAnbG9hZC11bmljb2RlLWF0LXN0YXJ0dXAnIGluCi0nb3JnLmZyZWVkZXNrdG9w LmlidXMucGFuZWwuZW1vamknIHNjaGVtYS4KLQotUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2 aWV3LmFwcHNwb3QuY29tLzM0MDc4MDA0MwotLS0tCi0gZGF0YS9pYnVzLnNjaGVtYXMuaW4gICAg ICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gdWkvZ3RrMy9wYW5lbGJp bmRpbmcudmFsYSB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t Ci0gMiBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvZGF0YS9pYnVzLnNjaGVtYXMuaW4gYi9kYXRhL2lidXMuc2NoZW1hcy5pbgot aW5kZXggNDUyM2NjYzQuLjNjNmI2ZjY5IDEwMDY0NAotLS0tIGEvZGF0YS9pYnVzLnNjaGVtYXMu aW4KLSsrKyBiL2RhdGEvaWJ1cy5zY2hlbWFzLmluCi1AQCAtNDU1LDYgKzQ1NSwzOCBAQAotICAg ICAgICAgICAgICAgICAgIDwvbG9uZz4KLSAgICAgICA8L2xvY2FsZT4KLSAgICAgPC9zY2hlbWE+ Ci0rICAgIDxzY2hlbWE+Ci0rICAgICAgPGtleT4vc2NoZW1hcy9kZXNrdG9wL2lidXMvcGFuZWwv ZW1vamkvbG9hZC1lbW9qaS1hdC1zdGFydHVwPC9rZXk+Ci0rICAgICAgPGFwcGx5dG8+L2Rlc2t0 b3AvaWJ1cy9wYW5lbC9lbW9qaS9sb2FkLWVtb2ppLWF0LXN0YXJ0dXA8L2FwcGx5dG8+Ci0rICAg ICAgPG93bmVyPmlidXM8L293bmVyPgotKyAgICAgIDx0eXBlPmJvb2w8L3R5cGU+Ci0rICAgICAg PGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KLSsgICAgICA8bG9jYWxlIG5hbWU9IkMiPgotKyAgICAg ICAgPHNob3J0PkxvYWQgdGhlIGVtb2ppIGRhdGEgYXQgdGhlIHRpbWUgb2Ygc3RhcnR1cDwvc2hv cnQ+Ci0rCSAgICA8bG9uZz5Mb2FkIHRoZSBlbW9qaSBkYXRhIGF0IHRoZSB0aW1lIG9mIHN0YXJ0 dXAgaWYgdHJ1ZS4KLSsgICAgICAgICAgICAgICAgICBBYm91dCAxME1CIG1lbW9yeSBpcyBuZWVk ZWQgdG8gbG9hZCB0aGUgZGF0YS4KLSsgICAgICAgICAgICAgICAgICBMb2FkIHRoZSBlbW9qaSBk YXRhIHdoZW4gb3BlbiB0aGUgZW1vamkgZGlhbG9nIGF0IHRoZQotKyAgICAgICAgICAgICAgICAg IGJlZ2lubmluZyBpZiBmYWxzZS4KLSsgICAgICAgICAgICA8L2xvbmc+Ci0rICAgICAgPC9sb2Nh bGU+Ci0rICAgIDwvc2NoZW1hPgotKyAgICA8c2NoZW1hPgotKyAgICAgIDxrZXk+L3NjaGVtYXMv ZGVza3RvcC9pYnVzL3BhbmVsL2Vtb2ppL2xvYWQtdW5pY29kZS1hdC1zdGFydHVwPC9rZXk+Ci0r ICAgICAgPGFwcGx5dG8+L2Rlc2t0b3AvaWJ1cy9wYW5lbC9lbW9qaS9sb2FkLXVuaWNvZGUtYXQt c3RhcnR1cDwvYXBwbHl0bz4KLSsgICAgICA8b3duZXI+aWJ1czwvb3duZXI+Ci0rICAgICAgPHR5 cGU+Ym9vbDwvdHlwZT4KLSsgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KLSsgICAgICA8 bG9jYWxlIG5hbWU9IkMiPgotKyAgICAgICAgPHNob3J0PkxvYWQgdGhlIFVuaWNvZGUgZGF0YSBh dCB0aGUgdGltZSBvZiBzdGFydHVwPC9zaG9ydD4KLSsJICAgIDxsb25nPkxvYWQgdGhlIFVuaWNv ZGUgZGF0YSBhdCB0aGUgdGltZSBvZiBzdGFydHVwIGlmIHRydWUuCi0rICAgICAgICAgICAgICAg ICAgQWJvdXQgMTVNQiBtZW1vcnkgaXMgbmVlZGVkIHRvIGxvYWQgdGhlIGRhdGEuCi0rICAgICAg ICAgICAgICAgICAgTG9hZCB0aGUgVW5pY29kZSBkYXRhIHdoZW4gb3BlbiB0aGUgZW1vamkgZGlh bG9nIGF0IHRoZQotKyAgICAgICAgICAgICAgICAgIGJlZ2lubmluZyBpZiBmYWxzZS4KLSsgICAg ICAgICAgICAgICAgICBUaGUgVW5pY29kZSBkYXRhIGlzIGFsd2F5cyBsb2FkZWQgYWZ0ZXIgdGhl IGVtb2ppIGRhdGEKLSsgICAgICAgICAgICAgICAgICBpcyBsb2FkZWQgZXZlbiBpZiB0cnVlLgot KyAgICAgICAgICAgIDwvbG9uZz4KLSsgICAgICA8L2xvY2FsZT4KLSsgICAgPC9zY2hlbWE+Ci0g ICAgIDxzY2hlbWE+Ci0gICAgICAgPGtleT4vc2NoZW1hcy9kZXNrdG9wL2lidXMvZ2VuZXJhbC9l bWJlZF9wcmVlZGl0X3RleHQ8L2tleT4KLSAgICAgICA8YXBwbHl0bz4vZGVza3RvcC9pYnVzL2dl bmVyYWwvZW1iZWRfcHJlZWRpdF90ZXh0PC9hcHBseXRvPgotZGlmZiAtLWdpdCBhL3VpL2d0azMv cGFuZWxiaW5kaW5nLnZhbGEgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1pbmRleCA1MDcw MDEyMS4uMWZiZjZjZmMgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi0r KysgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1AQCAtMzUsNiArMzUsMTAgQEAgY2xhc3Mg UGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2YXRlIGNvbnN0IHVp bnQgUFJFTE9BRF9FTkdJTkVTX0RFTEFZX1RJTUUgPSAzMDAwMDsKLSAgICAgcHJpdmF0ZSBHTGli Lkxpc3Q8QmluZGluZ0NvbW1vbi5LZXliaW5kaW5nPiBtX2tleWJpbmRpbmdzID0KLSAgICAgICAg ICAgICBuZXcgR0xpYi5MaXN0PEJpbmRpbmdDb21tb24uS2V5YmluZGluZz4oKTsKLSsgICAgcHJp dmF0ZSBib29sIG1fbG9hZF9lbW9qaV9hdF9zdGFydHVwOwotKyAgICBwcml2YXRlIGJvb2wgbV9s b2FkZWRfZW1vamkgPSBmYWxzZTsKLSsgICAgcHJpdmF0ZSBib29sIG1fbG9hZF91bmljb2RlX2F0 X3N0YXJ0dXA7Ci0rICAgIHByaXZhdGUgYm9vbCBtX2xvYWRlZF91bmljb2RlID0gZmFsc2U7Ci0g Ci0gICAgIHB1YmxpYyBQYW5lbEJpbmRpbmcoSUJ1cy5CdXMgYnVzKSB7Ci0gICAgICAgICBHTGli LmFzc2VydChidXMuaXNfY29ubmVjdGVkKCkpOwotQEAgLTEwOSw2ICsxMTMsMTQgQEAgY2xhc3Mg UGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgbV9zZXR0aW5nc19l bW9qaS5jaGFuZ2VkWyJwYXJ0aWFsLW1hdGNoLWNvbmRpdGlvbiJdLmNvbm5lY3QoKGtleSkgPT4g ewotICAgICAgICAgICAgICAgICBzZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpOwotICAgICAgICAg fSk7Ci0rCi0rICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImxvYWQtZW1vamktYXQt c3RhcnR1cCJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAgICAgICAgICBzZXRfbG9hZF9l bW9qaV9hdF9zdGFydHVwKCk7Ci0rICAgICAgICB9KTsKLSsKLSsgICAgICAgIG1fc2V0dGluZ3Nf ZW1vamkuY2hhbmdlZFsibG9hZC11bmljb2RlLWF0LXN0YXJ0dXAiXS5jb25uZWN0KChrZXkpID0+ IHsKLSsgICAgICAgICAgICAgICAgc2V0X2xvYWRfdW5pY29kZV9hdF9zdGFydHVwKCk7Ci0rICAg ICAgICB9KTsKLSAgICAgfQotIAotIAotQEAgLTE0OCw3ICsxNjAsMTEgQEAgY2xhc3MgUGFuZWxC aW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgIElCdXNFbW9qaWVyLnNl dF9hbm5vdGF0aW9uX2xhbmcoCi0gICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2pp LmdldF9zdHJpbmcoImxhbmciKSk7Ci0gICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9s YW5nX2lkID0gMDsKLS0gICAgICAgICAgICBJQnVzRW1vamllci5sb2FkX3VuaWNvZGVfZGljdCgp OwotKyAgICAgICAgICAgIG1fbG9hZGVkX2Vtb2ppID0gdHJ1ZTsKLSsgICAgICAgICAgICBpZiAo bV9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cCAmJiAhbV9sb2FkZWRfdW5pY29kZSkgewotKyAgICAg ICAgICAgICAgICBJQnVzRW1vamllci5sb2FkX3VuaWNvZGVfZGljdCgpOwotKyAgICAgICAgICAg ICAgICBtX2xvYWRlZF91bmljb2RlID0gdHJ1ZTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfSk7Ci0gICAgIH0KLUBAIC0xNjQsNyArMTgwLDIx IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgfQotIAot IAotKyAgICBwcml2YXRlIHZvaWQgc2V0X2xvYWRfZW1vamlfYXRfc3RhcnR1cCgpIHsKLSsgICAg ICAgIG1fbG9hZF9lbW9qaV9hdF9zdGFydHVwID0KLSsgICAgICAgICAgICBtX3NldHRpbmdzX2Vt b2ppLmdldF9ib29sZWFuKCJsb2FkLWVtb2ppLWF0LXN0YXJ0dXAiKTsKLSsgICAgfQotKwotKwot KyAgICBwcml2YXRlIHZvaWQgc2V0X2xvYWRfdW5pY29kZV9hdF9zdGFydHVwKCkgewotKyAgICAg ICAgbV9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cCA9Ci0rICAgICAgICAgICAgbV9zZXR0aW5nc19l bW9qaS5nZXRfYm9vbGVhbigibG9hZC11bmljb2RlLWF0LXN0YXJ0dXAiKTsKLSsgICAgfQotKwot ICAgICBwdWJsaWMgdm9pZCBsb2FkX3NldHRpbmdzKCkgewotKwotKyAgICAgICAgc2V0X2xvYWRf ZW1vamlfYXRfc3RhcnR1cCgpOwotKyAgICAgICAgc2V0X2xvYWRfdW5pY29kZV9hdF9zdGFydHVw KCk7Ci0gICAgICAgICBCaW5kaW5nQ29tbW9uLnVuYmluZF9zd2l0Y2hfc2hvcnRjdXQoQmluZGlu Z0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLkFOWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzKTsKLSAgICAgICAgIGJpbmRfZW1vamlf c2hvcnRjdXQoKTsKLUBAIC0xNzIsNyArMjAyLDggQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1 cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bV9zZXR0aW5nc19lbW9qaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlZiBtX2Nzc19wcm92aWRlcik7Ci0gICAgICAgICBzZXRfZW1vamlfZmF2b3JpdGVzKCk7Ci0t ICAgICAgICBzZXRfZW1vamlfbGFuZygpOwotKyAgICAgICAgaWYgKG1fbG9hZF9lbW9qaV9hdF9z dGFydHVwICYmICFtX2xvYWRlZF9lbW9qaSkKLSsgICAgICAgICAgICBzZXRfZW1vamlfbGFuZygp OwotICAgICAgICAgc2V0X2Vtb2ppX3BhcnRpYWxfbWF0Y2goKTsKLSAgICAgfQotIAotQEAgLTE5 MSw2ICsyMjIsMTIgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2Ugewot IAotIAotICAgICBwcml2YXRlIHZvaWQgc2hvd19lbW9qaWVyKEdkay5FdmVudCBldmVudCkgewot KyAgICAgICAgaWYgKCFtX2xvYWRlZF9lbW9qaSkKLSsgICAgICAgICAgICBzZXRfZW1vamlfbGFu ZygpOwotKyAgICAgICAgaWYgKCFtX2xvYWRlZF91bmljb2RlICYmIG1fbG9hZGVkX2Vtb2ppKSB7 Ci0rICAgICAgICAgICAgSUJ1c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKLSsgICAgICAg ICAgICBtX2xvYWRlZF91bmljb2RlID0gdHJ1ZTsKLSsgICAgICAgIH0KLSAgICAgICAgIG1fZW1v amllciA9IG5ldyBJQnVzRW1vamllcigpOwotICAgICAgICAgc3RyaW5nIGVtb2ppID0gbV9lbW9q aWVyLnJ1bihtX3JlYWxfY3VycmVudF9jb250ZXh0X3BhdGgsIGV2ZW50KTsKLSAgICAgICAgIGlm IChlbW9qaSA9PSBudWxsKSB7Ci0tLSAKLTIuMTQuMwotCi1Gcm9tIDdjY2JkMjFjYTdkMTYzY2Rk NzFkYzZjMDQwNWQ4YTMyZDYzZDMyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBm dWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAy MDE4IDE0OjA2OjMwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBEaXNhYmxlIHBhbmVsIGV4 dGVuc2lvbiBmb3IgZ2RtIHVzZXIKLQotVGhlIGdkbSB1c2VyJ3MgcHJvY2VzcyBpcyBhbHNvIHJ1 bm5pbmcgd2hpbGUgdGhlIGxvZ2luIHVzZXIncyBwcm9jZXNzCi1pcyBydW5uaW5nIHNvIHRoZSBk b3VibGUgcGFuZWwgZXh0ZW5zaW9ucyBhcmUgYmV0dGVyIHRvIGJlIGF2b2lkZWQgZm9yCi10aGUg bWVtb3J5IHVzYWdlLgotCi1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5j b20vMzQwMzMwMDQ0Ci0tLS0KLSBidXMvbWFpbi5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRp b25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1cy9tYWluLmMgYi9idXMv bWFpbi5jCi1pbmRleCA1YjI1ODliMS4uZmU2MDM3NzggMTAwNjQ0Ci0tLS0gYS9idXMvbWFpbi5j Ci0rKysgYi9idXMvbWFpbi5jCi1AQCAtNDcsNiArNDcsMTAgQEAgc3RhdGljIGdjaGFyICpwYW5l bF9leHRlbnNpb24gPSAiZGVmYXVsdCI7Ci0gc3RhdGljIGdjaGFyICpjb25maWcgPSAiZGVmYXVs dCI7Ci0gc3RhdGljIGdjaGFyICpkZXNrdG9wID0gImdub21lIjsKLSAKLStzdGF0aWMgZ2NoYXIg KnBhbmVsX2V4dGVuc2lvbl9kaXNhYmxlX3VzZXJzW10gPSB7Ci0rICAgICJnZG0iCi0rfTsKLSsK LSBzdGF0aWMgdm9pZAotIHNob3dfdmVyc2lvbl9hbmRfcXVpdCAodm9pZCkKLSB7Ci1AQCAtMTcw LDYgKzE3NCw5IEBAIF9zaWdfdXNyMl9oYW5kbGVyIChpbnQgc2lnKQotIGdpbnQKLSBtYWluIChn aW50IGFyZ2MsIGdjaGFyICoqYXJndikKLSB7Ci0rICAgIGludCBpOwotKyAgICBjb25zdCBnY2hh ciAqdXNlcm5hbWUgPSBpYnVzX2dldF91c2VyX25hbWUgKCk7Ci0rCi0gICAgIHNldGxvY2FsZSAo TENfQUxMLCAiIik7Ci0gCi0gICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0ID0gZ19vcHRpb25f Y29udGV4dF9uZXcgKCItIGlidXMgZGFlbW9uIik7Ci1AQCAtMTk0LDkgKzIwMSw3IEBAIG1haW4g KGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotIAotICAgICAvKiBjaGVjayB1aWQgKi8KLSAgICAg ewotLSAgICAgICAgY29uc3QgZ2NoYXIgKnVzZXJuYW1lID0gaWJ1c19nZXRfdXNlcl9uYW1lICgp OwotLSAgICAgICAgdWlkX3QgdWlkID0gZ2V0dWlkICgpOwotLSAgICAgICAgc3RydWN0IHBhc3N3 ZCAqcHdkID0gZ2V0cHd1aWQgKHVpZCk7Ci0rICAgICAgICBzdHJ1Y3QgcGFzc3dkICpwd2QgPSBn ZXRwd3VpZCAoZ2V0dWlkICgpKTsKLSAKLSAgICAgICAgIGlmIChwd2QgPT0gTlVMTCB8fCBnX3N0 cmNtcDAgKHB3ZC0+cHdfbmFtZSwgdXNlcm5hbWUpICE9IDApIHsKLSAgICAgICAgICAgICBnX3By aW50ZXJyICgiUGxlYXNlIHJ1biBpYnVzLWRhZW1vbiB3aXRoIGxvZ2luIHVzZXIhIERvIG5vdCBy dW4gaWJ1cy1kYWVtb24gd2l0aCBzdWRvIG9yIHN1LlxuIik7Ci1AQCAtMjM3LDYgKzI0MiwxMiBA QCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKLSAgICAgfQotIAotICAgICBidXNfc2Vy dmVyX2luaXQgKCk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMocGFuZWxfZXh0 ZW5zaW9uX2Rpc2FibGVfdXNlcnMpOyBpKyspIHsKLSsgICAgICAgIGlmICghZ19zdHJjbXAwICh1 c2VybmFtZSwgcGFuZWxfZXh0ZW5zaW9uX2Rpc2FibGVfdXNlcnNbaV0pICE9IDApIHsKLSsgICAg ICAgICAgICBwYW5lbF9leHRlbnNpb24gPSAiZGlzYWJsZSI7Ci0rICAgICAgICAgICAgYnJlYWs7 Ci0rICAgICAgICB9Ci0rICAgIH0KLSAgICAgaWYgKCFzaW5nbGUpIHsKLSAgICAgICAgIC8qIGV4 ZWN1dGUgY29uZmlnIGNvbXBvbmVudCAqLwotICAgICAgICAgaWYgKGdfc3RyY21wMCAoY29uZmln LCAiZGVmYXVsdCIpID09IDApIHsKLUBAIC0yNzEsMjUgKzI4MiwyNSBAQCBtYWluIChnaW50IGFy Z2MsIGdjaGFyICoqYXJndikKLSAgICAgICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFu ZWwpKQotICAgICAgICAgICAgICAgICBleGl0ICgtMSk7Ci0gICAgICAgICB9Ci0rICAgIH0KLSAK LSAjaWZkZWYgRU1PSklfRElDVAotLSAgICAgICAgaWYgKGdfc3RyY21wMCAocGFuZWxfZXh0ZW5z aW9uLCAiZGVmYXVsdCIpID09IDApIHsKLS0gICAgICAgICAgICBCdXNDb21wb25lbnQgKmNvbXBv bmVudDsKLS0gICAgICAgICAgICBjb21wb25lbnQgPSBidXNfaWJ1c19pbXBsX2xvb2t1cF9jb21w b25lbnRfYnlfbmFtZSAoCi0tICAgICAgICAgICAgICAgICAgICBCVVNfREVGQVVMVF9JQlVTLCBJ QlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OKTsKLS0gICAgICAgICAgICBpZiAoY29tcG9uZW50 KSB7Ci0tICAgICAgICAgICAgICAgIGJ1c19jb21wb25lbnRfc2V0X3Jlc3RhcnQgKGNvbXBvbmVu dCwgcmVzdGFydCk7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGlmIChjb21wb25lbnQg PT0gTlVMTCB8fAotLSAgICAgICAgICAgICAgICAhYnVzX2NvbXBvbmVudF9zdGFydCAoY29tcG9u ZW50LCBnX3ZlcmJvc2UpKSB7Ci0tICAgICAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90 IGV4ZWN1dGUgZGVmYXVsdCBwYW5lbCBwcm9ncmFtXG4iKTsKLS0gICAgICAgICAgICAgICAgZXhp dCAoLTEpOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0gZWxzZSBpZiAoZ19zdHJjbXAwIChw YW5lbF9leHRlbnNpb24sICJkaXNhYmxlIikgIT0gMCAmJgotLSAgICAgICAgICAgICAgICAgICBn X3N0cmNtcDAgKHBhbmVsX2V4dGVuc2lvbiwgIiIpICE9IDApIHsKLS0gICAgICAgICAgICBpZiAo IWV4ZWN1dGVfY21kbGluZSAocGFuZWxfZXh0ZW5zaW9uKSkKLS0gICAgICAgICAgICAgICAgZXhp dCAoLTEpOwotKyAgICBpZiAoZ19zdHJjbXAwIChwYW5lbF9leHRlbnNpb24sICJkZWZhdWx0Iikg PT0gMCkgewotKyAgICAgICAgQnVzQ29tcG9uZW50ICpjb21wb25lbnQ7Ci0rICAgICAgICBjb21w b25lbnQgPSBidXNfaWJ1c19pbXBsX2xvb2t1cF9jb21wb25lbnRfYnlfbmFtZSAoCi0rICAgICAg ICAgICAgICAgIEJVU19ERUZBVUxUX0lCVVMsIElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT04p OwotKyAgICAgICAgaWYgKGNvbXBvbmVudCkgewotKyAgICAgICAgICAgIGJ1c19jb21wb25lbnRf c2V0X3Jlc3RhcnQgKGNvbXBvbmVudCwgcmVzdGFydCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBp ZiAoY29tcG9uZW50ID09IE5VTEwgfHwKLSsgICAgICAgICAgICAhYnVzX2NvbXBvbmVudF9zdGFy dCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7Ci0rICAgICAgICAgICAgZ19wcmludGVyciAoIkNh biBub3QgZXhlY3V0ZSBkZWZhdWx0IHBhbmVsIHByb2dyYW1cbiIpOwotKyAgICAgICAgICAgIGV4 aXQgKC0xKTsKLSAgICAgICAgIH0KLSsgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKHBhbmVsX2V4 dGVuc2lvbiwgImRpc2FibGUiKSAhPSAwICYmCi0rICAgICAgICAgICAgICAgZ19zdHJjbXAwIChw YW5lbF9leHRlbnNpb24sICIiKSAhPSAwKSB7Ci0rICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGlu ZSAocGFuZWxfZXh0ZW5zaW9uKSkKLSsgICAgICAgICAgICBleGl0ICgtMSk7Ci0gICAgIH0KLSAj ZW5kaWYKLSAKLS0tIAotMi4xNC4zCi0KLUZyb20gYzU3YjdjMzRkNzU4NzFkYjE3MmUwMjNiMDA5 NGI5NzkwMDBmNjJmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTQ6MTA6 MjkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEVuYWJsZSBlbW9qaSBrZXliaW5kaW5nIGlu IFdheWxhbmQKLQotWEkyIGtleWJpbmRpbmcgZG9lcyBub3Qgd29yayBmb3IgdGhlIHJvb3Qgd2lu ZG93IGluIFdheWxhbmQgYmVjYXVzZQotb2YgYSBzZWN1cml0eSBpc3N1ZSBtYXliZS4gTm93IEkg dGhpbmsgdG8gbW92ZSB0aGUga2V5YmluZGluZyBpbgotaWJ1cy1leHRlbnNpb24tZ3RrMyB0byBl YWNoIElCdXNFbmdpbmUuCi0KLUZJWE1FOiBVbmZvcnR1bmF0ZWxseSBndGtfZ2V0X2N1cnJlbnRf ZXZlbnRfdGltZSgpIGNhbm5vdCBnZXQgdGltZQotZm9yIHRoZSBkZWxheWVkIERCdXMgZXZlbnRz IGFuZCBndGtfd2luZG93X21vdmUoKSBkb2VzIG5vdCB3b3JrIGZvcgotR3RrRGlhbG9nIHdpdGhv dXQgYSBwYXJlbnQgd2luZG93IGluIFdheWxhbmQuCi0KLVI9U2hhd24uUC5IdWFuZ0BnbWFpbC5j b20KLQotUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMzMzcwMDA0 MwotLS0tCi0gYnVzL2VuZ2luZXByb3h5LmMgICAgICAgICB8ICAxOSArLQotIGJ1cy9pYnVzaW1w bC5jICAgICAgICAgICAgfCAgNDcgKysrLQotIGJ1cy9pbnB1dGNvbnRleHQuYyAgICAgICAgfCAg MjkgKystCi0gc3JjL01ha2VmaWxlLmFtICAgICAgICAgICB8ICAgMiArCi0gc3JjL2lidXMuaCAg ICAgICAgICAgICAgICB8ICAgMSArCi0gc3JjL2lidXNhY2NlbGdyb3VwLmMgICAgICB8IDUyOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2lidXNh Y2NlbGdyb3VwLmggICAgICB8ICA1MSArKysrKwotIHNyYy9pYnVzZW5naW5lLmMgICAgICAgICAg fCAxNzkgKysrKysrKysrKysrKysrLQotIHVpL2d0azMvZW1vamllci52YWxhICAgICAgfCAgIDEg KwotIHVpL2d0azMvZXh0ZW5zaW9uLnZhbGEgICAgfCAgIDUgKy0KLSB1aS9ndGszL3BhbmVsYmlu ZGluZy52YWxhIHwgIDY1ICsrLS0tLQotIDExIGZpbGVzIGNoYW5nZWQsIDg2MyBpbnNlcnRpb25z KCspLCA2NSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXNhY2NlbGdy b3VwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXNhY2NlbGdyb3VwLmgKLQotZGlmZiAt LWdpdCBhL2J1cy9lbmdpbmVwcm94eS5jIGIvYnVzL2VuZ2luZXByb3h5LmMKLWluZGV4IGNkNGQ1 NGZkLi4xNzVhZWM1NiAxMDA2NDQKLS0tLSBhL2J1cy9lbmdpbmVwcm94eS5jCi0rKysgYi9idXMv ZW5naW5lcHJveHkuYwotQEAgLTIsNyArMiw3IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8K LSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEzIFBl bmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAx NS0yMDE2IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENv cHlyaWdodCAoQykgMjAxNS0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE2IFJlZCBIYXQsIEluYy4KLSAgKgot ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKLUBAIC05MCw2ICs5MCw3IEBAIGVudW0gewotICAgICBDVVJTT1JfRE9XTl9MT09L VVBfVEFCTEUsCi0gICAgIFJFR0lTVEVSX1BST1BFUlRJRVMsCi0gICAgIFVQREFURV9QUk9QRVJU WSwKLSsgICAgUEFORUxfRVhURU5TSU9OLAotICAgICBMQVNUX1NJR05BTCwKLSB9OwotIAotQEAg LTM3MCw2ICszNzEsMTcgQEAgYnVzX2VuZ2luZV9wcm94eV9jbGFzc19pbml0IChCdXNFbmdpbmVQ cm94eUNsYXNzICpjbGFzcykKLSAgICAgICAgICAgICAxLAotICAgICAgICAgICAgIElCVVNfVFlQ RV9QUk9QRVJUWSk7Ci0gCi0rICAgIGVuZ2luZV9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQot KyAgICAgICAgZ19zaWduYWxfbmV3IChJXygicGFuZWwtZXh0ZW5zaW9uIiksCi0rICAgICAgICAg ICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAgICAgICAgICBHX1NJR05BTF9SVU5f TEFTVCwKLSsgICAgICAgICAgICAwLAotKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0rICAgICAg ICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVCwKLSsgICAgICAgICAgICBHX1RZUEVfTk9O RSwKLSsgICAgICAgICAgICAxLAotKyAgICAgICAgICAgIEdfVFlQRV9WQVJJQU5UKTsKLSsKLSAg ICAgdGV4dF9lbXB0eSA9IGlidXNfdGV4dF9uZXdfZnJvbV9zdGF0aWNfc3RyaW5nICgiIik7Ci0g ICAgIGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0X2VtcHR5KTsKLSAKLUBAIC02MzEsNiArNjQzLDEx IEBAIGJ1c19lbmdpbmVfcHJveHlfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94eSwKLSAgICAg ICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwg IlBhbmVsRXh0ZW5zaW9uIikgPT0gMCkgewotKyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5l LCBlbmdpbmVfc2lnbmFsc1tQQU5FTF9FWFRFTlNJT05dLCAwLCBwYXJhbWV0ZXJzKTsKLSsgICAg ICAgIHJldHVybjsKLSsgICAgfQotKwotICAgICBnX3JldHVybl9pZl9yZWFjaGVkICgpOwotIH0K LSAKLWRpZmYgLS1naXQgYS9idXMvaWJ1c2ltcGwuYyBiL2J1cy9pYnVzaW1wbC5jCi1pbmRleCA1 OGQyMDVjZi4uYTRjZTNkOWQgMTAwNjQ0Ci0tLS0gYS9idXMvaWJ1c2ltcGwuYwotKysrIGIvYnVz L2lidXNpbXBsLmMKLUBAIC0zMDIsOSArMzAyLDggQEAgX3BhbmVsX2Rlc3Ryb3lfY2IgKEJ1c1Bh bmVsUHJveHkgKnBhbmVsLAotIH0KLSAKLSBzdGF0aWMgdm9pZAotLV9wYW5lbF9wYW5lbF9leHRl bnNpb25fY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdWYXJpYW50ICAgICAgKnBhcmFtZXRlcnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgQnVzSUJ1c0ltcGwgICppYnVzKQotK2J1c19pYnVzX2ltcGxfcGFuZWxfZXh0ZW5zaW9uX3Jl Y2VpdmVkIChCdXNJQnVzSW1wbCAqaWJ1cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1ZhcmlhbnQgICAgKnBhcmFtZXRlcnMpCi0gewotICAgICBpZiAoIWlidXMt PmV4dGVuc2lvbikgewotICAgICAgICAgZ193YXJuaW5nICgiUGFuZWwgZXh0ZW5zaW9uIGlzIG5v dCBydW5uaW5nLiIpOwotQEAgLTMyMyw2ICszMjIsMTQgQEAgX3BhbmVsX3BhbmVsX2V4dGVuc2lv bl9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAtMSwg TlVMTCwgTlVMTCwgTlVMTCk7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rX3BhbmVsX3BhbmVsX2V4 dGVuc2lvbl9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1ZhcmlhbnQgICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICBCdXNJQnVzSW1wbCAgKmlidXMpCi0rewotKyAgICBidXNfaWJ1c19pbXBsX3BhbmVsX2V4 dGVuc2lvbl9yZWNlaXZlZCAoaWJ1cywgcGFyYW1ldGVycyk7Ci0rfQotKwotIHN0YXRpYyB2b2lk Ci0gX3JlZ2lzdHJ5X2NoYW5nZWRfY2IgKElCdXNSZWdpc3RyeSAqcmVnaXN0cnksCi0gICAgICAg ICAgICAgICAgICAgICAgIEJ1c0lCdXNJbXBsICAqaWJ1cykKLUBAIC02NDIsNiArNjQ5LDIxIEBA IGJ1c19pYnVzX2ltcGxfc2V0X2NvbnRleHRfZW5naW5lX2Zyb21fZGVzYyAoQnVzSUJ1c0ltcGwg ICAgICppYnVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwpOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK19jb250ZXh0X3BhbmVsX2V4dGVuc2lvbl9jYiAo QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R1ZhcmlhbnQgICAgICAgICpwYXJhbWV0ZXJzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQnVzSUJ1c0ltcGwgICAgICppYnVzKQotK3sKLSsgICAgYnVzX2lidXNfaW1wbF9wYW5lbF9l eHRlbnNpb25fcmVjZWl2ZWQgKGlidXMsIHBhcmFtZXRlcnMpOwotK30KLSsKLStjb25zdCBzdGF0 aWMgc3RydWN0IHsKLSsgICAgY29uc3QgZ2NoYXIgKm5hbWU7Ci0rICAgIEdDYWxsYmFjayAgICBj YWxsYmFjazsKLSt9IGNvbnRleHRfc2lnbmFscyBbXSA9IHsKLSsgICAgeyAicGFuZWwtZXh0ZW5z aW9uIiwgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX2Ni KSB9Ci0rfTsKLSsKLSAvKioKLSAgKiBidXNfaWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQ6 Ci0gICoKLUBAIC02NTEsNiArNjczLDExIEBAIHN0YXRpYyB2b2lkCi0gYnVzX2lidXNfaW1wbF9z ZXRfZm9jdXNlZF9jb250ZXh0IChCdXNJQnVzSW1wbCAgICAgKmlidXMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gewotKyAg ICBnaW50IGk7Ci0rICAgIEJ1c0VuZ2luZVByb3h5ICplbmdpbmUgPSBOVUxMOwotKyAgICBndWlu dCBwdXJwb3NlID0gMDsKLSsgICAgZ3VpbnQgaGludHMgPSAwOwotKwotICAgICBnX2Fzc2VydCAo QlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOwotICAgICBnX2Fzc2VydCAoY29udGV4dCA9PSBOVUxM IHx8IEJVU19JU19JTlBVVF9DT05URVhUIChjb250ZXh0KSk7Ci0gICAgIGdfYXNzZXJ0IChjb250 ZXh0ID09IE5VTEwgfHwgYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NhcGFiaWxpdGllcyAoY29udGV4 dCkgJiBJQlVTX0NBUF9GT0NVUyk7Ci1AQCAtNjYwLDEwICs2ODcsNiBAQCBidXNfaWJ1c19pbXBs X3NldF9mb2N1c2VkX2NvbnRleHQgKEJ1c0lCdXNJbXBsICAgICAqaWJ1cywKLSAgICAgICAgIHJl dHVybjsKLSAgICAgfQotIAotLSAgICBCdXNFbmdpbmVQcm94eSAqZW5naW5lID0gTlVMTDsKLS0g ICAgZ3VpbnQgcHVycG9zZSA9IDA7Ci0tICAgIGd1aW50IGhpbnRzID0gMDsKLS0KLSAgICAgaWYg KGlidXMtPmZvY3VzZWRfY29udGV4dCkgewotICAgICAgICAgaWYgKGlidXMtPnVzZV9nbG9iYWxf ZW5naW5lKSB7Ci0gICAgICAgICAgICAgLyogZGV0dGFjaCBlbmdpbmUgZnJvbSB0aGUgZm9jdXNl ZCBjb250ZXh0ICovCi1AQCAtNjgxLDYgKzcwNCwxMCBAQCBidXNfaWJ1c19pbXBsX3NldF9mb2N1 c2VkX2NvbnRleHQgKEJ1c0lCdXNJbXBsICAgICAqaWJ1cywKLSAKLSAgICAgICAgIGJ1c19pbnB1 dF9jb250ZXh0X2dldF9jb250ZW50X3R5cGUgKGlidXMtPmZvY3VzZWRfY29udGV4dCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdXJwb3NlLCAmaGludHMp OwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhjb250ZXh0X3NpZ25hbHMp OyBpKyspIHsKLSsgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1 bmMgKGlidXMtPmZvY3VzZWRfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgIGNvbnRleHRf c2lnbmFsc1tpXS5jYWxsYmFjaywgaWJ1cyk7Ci0rICAgICAgICB9Ci0gICAgICAgICBnX29iamVj dF91bnJlZiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0KTsKLSAgICAgICAgIGlidXMtPmZvY3VzZWRf Y29udGV4dCA9IE5VTEw7Ci0gICAgIH0KLUBAIC02OTgsNiArNzI1LDEyIEBAIGJ1c19pYnVzX2lt cGxfc2V0X2ZvY3VzZWRfY29udGV4dCAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAotICAgICAgICAg ICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmUgKGNvbnRleHQsIGVuZ2luZSk7Ci0gICAg ICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfZW5hYmxlIChjb250ZXh0KTsKLSAgICAgICAgIH0K LSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoY29udGV4dF9zaWduYWxzKTsg aSsrKSB7Ci0rICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaWJ1cy0+Zm9jdXNlZF9jb250 ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tpXS5u YW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tpXS5j YWxsYmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKLSsgICAgICAg IH0KLSAKLSAgICAgICAgIGlmIChpYnVzLT5wYW5lbCAhPSBOVUxMKQotICAgICAgICAgICAgIGJ1 c19wYW5lbF9wcm94eV9mb2N1c19pbiAoaWJ1cy0+cGFuZWwsIGNvbnRleHQpOwotZGlmZiAtLWdp dCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1cy9pbnB1dGNvbnRleHQuYwotaW5kZXggNGYyZWNh ZmMuLmE5NTdkMTA3IDEwMDY0NAotLS0tIGEvYnVzL2lucHV0Y29udGV4dC5jCi0rKysgYi9idXMv aW5wdXRjb250ZXh0LmMKLUBAIC0xMjcsNiArMTI3LDcgQEAgZW51bSB7Ci0gICAgIEVOR0lORV9D SEFOR0VELAotICAgICBSRVFVRVNUX0VOR0lORSwKLSAgICAgU0VUX0NPTlRFTlRfVFlQRSwKLSsg ICAgUEFORUxfRVhURU5TSU9OLAotICAgICBMQVNUX1NJR05BTCwKLSB9OwotIAotQEAgLTU5OCw2 ICs1OTksMTcgQEAgYnVzX2lucHV0X2NvbnRleHRfY2xhc3NfaW5pdCAoQnVzSW5wdXRDb250ZXh0 Q2xhc3MgKmNsYXNzKQotICAgICAgICAgICAgIEdfVFlQRV9VSU5ULAotICAgICAgICAgICAgIEdf VFlQRV9VSU5UKTsKLSAKLSsgICAgY29udGV4dF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQot KyAgICAgICAgZ19zaWduYWxfbmV3IChJXygicGFuZWwtZXh0ZW5zaW9uIiksCi0rICAgICAgICAg ICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKLSsgICAgICAgICAgICBHX1NJR05BTF9SVU5f TEFTVCwKLSsgICAgICAgICAgICAwLAotKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0rICAgICAg ICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVCwKLSsgICAgICAgICAgICBHX1RZUEVfTk9O RSwKLSsgICAgICAgICAgICAxLAotKyAgICAgICAgICAgIEdfVFlQRV9WQVJJQU5UKTsKLSsKLSAg ICAgdGV4dF9lbXB0eSA9IGlidXNfdGV4dF9uZXdfZnJvbV9zdHJpbmcgKCIiKTsKLSAgICAgZ19v YmplY3RfcmVmX3NpbmsgKHRleHRfZW1wdHkpOwotICAgICBsb29rdXBfdGFibGVfZW1wdHkgPSBp YnVzX2xvb2t1cF90YWJsZV9uZXcgKDkgLyogcGFnZSBzaXplICovLCAwLCBGQUxTRSwgRkFMU0Up OwotQEAgLTIxMDIsNiArMjExNCwyMCBAQCBfZW5naW5lX3VwZGF0ZV9wcm9wZXJ0eV9jYiAoQnVz RW5naW5lUHJveHkgICplbmdpbmUsCi0gICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcm9w ZXJ0eSAoY29udGV4dCwgcHJvcCk7Ci0gfQotIAotKy8qKgotKyAqIF9lbmdpbmVfcGFuZWxfZXh0 ZW5zaW9uX2NiOgotKyAqCi0rICogQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiAicGFuZWwt ZXh0ZW5zaW9uIiBnbGliIHNpZ25hbCBpcyBzZW50Ci0rICogZnJvbSB0aGUgZW5naW5lIG9iamVj dC4KLSsgKi8KLStzdGF0aWMgdm9pZAotK19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uX2NiIChCdXNF bmdpbmVQcm94eSAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zhcmlh bnQgICAgICAgICpwYXJhbWV0ZXJzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJ bnB1dENvbnRleHQgKmNvbnRleHQpCi0rewotKyAgICBnX3NpZ25hbF9lbWl0IChjb250ZXh0LCBj b250ZXh0X3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgcGFyYW1ldGVycyk7Ci0rfQotKwot ICNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgX2VuZ2luZV8jI25hbWUjI19jYiAoQnVzRW5naW5l UHJveHkgICAqZW5naW5lLCAgICAgICAgICAgICAgXAotQEAgLTIyNDQsNyArMjI3MCw4IEBAIGNv bnN0IHN0YXRpYyBzdHJ1Y3QgewotICAgICB7ICJjdXJzb3ItZG93bi1sb29rdXAtdGFibGUiLCBH X0NBTExCQUNLIChfZW5naW5lX2N1cnNvcl9kb3duX2xvb2t1cF90YWJsZV9jYikgfSwKLSAgICAg eyAicmVnaXN0ZXItcHJvcGVydGllcyIsICAgICAgR19DQUxMQkFDSyAoX2VuZ2luZV9yZWdpc3Rl cl9wcm9wZXJ0aWVzX2NiKSB9LAotICAgICB7ICJ1cGRhdGUtcHJvcGVydHkiLCAgICAgICAgICBH X0NBTExCQUNLIChfZW5naW5lX3VwZGF0ZV9wcm9wZXJ0eV9jYikgfSwKLS0gICAgeyAiZGVzdHJv eSIsICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2VuZ2luZV9kZXN0cm95X2NiKSB9LAot KyAgICB7ICJwYW5lbC1leHRlbnNpb24iLCAgICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX3Bh bmVsX2V4dGVuc2lvbl9jYikgfSwKLSsgICAgeyAiZGVzdHJveSIsICAgICAgICAgICAgICAgICAg R19DQUxMQkFDSyAoX2VuZ2luZV9kZXN0cm95X2NiKSB9Ci0gfTsKLSAKLSBzdGF0aWMgdm9pZAot ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggNzJl YzA1YWIuLjZhNjJlMGYwIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMv TWFrZWZpbGUuYW0KLUBAIC03Miw2ICs3Miw3IEBAIGxpYmlidXNfMV8wX2xhX0xERkxBR1MgPSAg ICAgICAgICAgIFwKLSAgICAgJChOVUxMKQotIAotIGlidXNfc291cmNlcyA9ICAgICAgICAgICAg ICBcCi0rICAgIGlidXNhY2NlbGdyb3VwLmMgICAgICAgIFwKLSAgICAgaWJ1c2F0dHJpYnV0ZS5j ICAgICAgICAgXAotICAgICBpYnVzYXR0cmxpc3QuYyAgICAgICAgICBcCi0gICAgIGlidXNidXMu YyAgICAgICAgICAgICAgIFwKLUBAIC0xMjIsNiArMTIzLDcgQEAgaWJ1c19lbnVtdHlwZXNfc291 cmNlcyA9ICAgIFwKLSAgICAgJChOVUxMKQotIGlidXNfaGVhZGVycyA9ICAgICAgICAgICAgICBc Ci0gICAgIGlidXMuaCAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1c2FjY2VsZ3JvdXAuaCAg ICAgICAgXAotICAgICBpYnVzYXR0cmlidXRlLmggICAgICAgICBcCi0gICAgIGlidXNhdHRybGlz dC5oICAgICAgICAgIFwKLSAgICAgaWJ1c2J1cy5oICAgICAgICAgICAgICAgXAotZGlmZiAtLWdp dCBhL3NyYy9pYnVzLmggYi9zcmMvaWJ1cy5oCi1pbmRleCBiMTVkZGVkOS4uMjU2ZDU3YmEgMTAw NjQ0Ci0tLS0gYS9zcmMvaWJ1cy5oCi0rKysgYi9zcmMvaWJ1cy5oCi1AQCAtNjAsNiArNjAsNyBA QAotICNpbmNsdWRlIDxpYnVzZW1vamkuaD4KLSAjaW5jbHVkZSA8aWJ1c3VuaWNvZGUuaD4KLSAj aW5jbHVkZSA8aWJ1c3hldmVudC5oPgotKyNpbmNsdWRlIDxpYnVzYWNjZWxncm91cC5oPgotIAot ICNpZm5kZWYgSUJVU19ESVNBQkxFX0RFUFJFQ0FURUQKLSAjaW5jbHVkZSA8aWJ1c2tleXN5bXMt Y29tcGF0Lmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNhY2NlbGdyb3VwLmMgYi9zcmMvaWJ1c2Fj Y2VsZ3JvdXAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi44YTgxNTk3 ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2lidXNhY2NlbGdyb3VwLmMKLUBAIC0wLDAgKzEs NTI5IEBACi0rLyogR1RLIC0gVGhlIEdJTVAgVG9vbGtpdAotKyAqIENvcHlyaWdodCAoQykgMTk5 OCwgMjAwMSBUaW0gSmFuaWsKLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyAqLwotKwotKy8qCi0rICogTW9kaWZpZWQg YnkgdGhlIEdUSysgVGVhbSBhbmQgb3RoZXJzIDE5OTctMjAwMC4gIFNlZSB0aGUgQVVUSE9SUwot KyAqIGZpbGUgZm9yIGEgbGlzdCBvZiBwZW9wbGUgb24gdGhlIEdUSysgVGVhbS4gIFNlZSB0aGUg Q2hhbmdlTG9nCi0rICogZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMg YXJlIGRpc3RyaWJ1dGVkIHdpdGgKLSsgKiBHVEsrIGF0IGZ0cDovL2Z0cC5ndGsub3JnL3B1Yi9n dGsvLgotKyAqLwotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSA8c3RyaW5nLmg+ Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotKyNpbmNsdWRlICJpYnVzYWNjZWxncm91cC5oIgot KyNpbmNsdWRlICJpYnVza2V5cy5oIgotKyNpbmNsdWRlICJpYnVza2V5c3ltcy5oIgotKwotKwot Ky8qIGZvciBfZ3RrX2dldF9wcmltYXJ5X2FjY2VsX21vZCgpICovCi0rI2RlZmluZSBfSUJVU19H RVRfUFJJTUFSWV9BQ0NFTF9NT0QgSUJVU19DT05UUk9MX01BU0sKLSsKLSsvKioKLSsgKiBTRUNU SU9OOiBpYnVzYWNjZWxncm91cAotKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogR3JvdXBzIG9mIGds b2JhbCBrZXlib2FyZCBhY2NlbGVyYXRvcnMgZm9yIGFuCi0rICogICAgIGVudGlyZSBHdGtXaW5k b3cKLSsgKiBAdGl0bGU6IEFjY2VsZXJhdG9yIEdyb3VwcwotKyAqIEBzdGFiaWxpdHk6IFVuc3Rh YmxlCi0rICoKLSsgKiBQcm92aWRlcyBpYnVzX2FjY2VsZXJhdG9yX3BhcnNlKCkKLSsgKi8KLSsK LSsKLSsvKioKLSsgKiBpYnVzX2FjY2VsZXJhdG9yX3ZhbGlkOgotKyAqIEBrZXl2YWw6IGEgR0RL IGtleXZhbAotKyAqIEBtb2RpZmllcnM6IG1vZGlmaWVyIG1hc2sKLSsgKgotKyAqIERldGVybWlu ZXMgd2hldGhlciBhIGdpdmVuIGtleXZhbCBhbmQgbW9kaWZpZXIgbWFzayBjb25zdGl0dXRlCi0r ICogYSB2YWxpZCBrZXlib2FyZCBhY2NlbGVyYXRvci4gRm9yIGV4YW1wbGUsIHRoZSAjSUJVU19L RVlfYSBrZXl2YWwKLSsgKiBwbHVzICNJQlVTX0NPTlRST0xfTUFTSyBpcyB2YWxpZCAtIHRoaXMg aXMgYSDigJxDdHJsK2HigJ0gYWNjZWxlcmF0b3IuCi0rICogQnV0LCB5b3UgY2FuJ3QsIGZvciBp bnN0YW5jZSwgdXNlIHRoZSAjSUJVU19LRVlfQ29udHJvbF9MIGtleXZhbAotKyAqIGFzIGFuIGFj Y2VsZXJhdG9yLgotKyAqCi0rICogUmV0dXJuczogJVRSVUUgaWYgdGhlIGFjY2VsZXJhdG9yIGlz IHZhbGlkCi0rICovCi0rZ2Jvb2xlYW4KLStpYnVzX2FjY2VsZXJhdG9yX3ZhbGlkIChndWludCAg ICAgICAgICAga2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgIElCdXNNb2RpZmllclR5 cGUgbW9kaWZpZXJzKQotK3sKLSsgICAgc3RhdGljIGNvbnN0IGd1aW50IGludmFsaWRfYWNjZWxl cmF0b3JfdmFsc1tdID0gewotKyAgICAgICAgSUJVU19LRVlfU2hpZnRfTCwgSUJVU19LRVlfU2hp ZnRfUiwgSUJVU19LRVlfU2hpZnRfTG9jaywKLSsgICAgICAgIElCVVNfS0VZX0NhcHNfTG9jaywg SUJVU19LRVlfSVNPX0xvY2ssIElCVVNfS0VZX0NvbnRyb2xfTCwKLSsgICAgICAgIElCVVNfS0VZ X0NvbnRyb2xfUiwgSUJVU19LRVlfTWV0YV9MLCBJQlVTX0tFWV9NZXRhX1IsCi0rICAgICAgICBJ QlVTX0tFWV9BbHRfTCwgSUJVU19LRVlfQWx0X1IsIElCVVNfS0VZX1N1cGVyX0wsIElCVVNfS0VZ X1N1cGVyX1IsCi0rICAgICAgICBJQlVTX0tFWV9IeXBlcl9MLCBJQlVTX0tFWV9IeXBlcl9SLCBJ QlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0LAotKyAgICAgICAgSUJVU19LRVlfSVNPX05leHRfR3Jv dXAsIElCVVNfS0VZX0lTT19QcmV2X0dyb3VwLAotKyAgICAgICAgSUJVU19LRVlfSVNPX0ZpcnN0 X0dyb3VwLCBJQlVTX0tFWV9JU09fTGFzdF9Hcm91cCwKLSsgICAgICAgIElCVVNfS0VZX01vZGVf c3dpdGNoLCBJQlVTX0tFWV9OdW1fTG9jaywgSUJVU19LRVlfTXVsdGlfa2V5LAotKyAgICAgICAg SUJVU19LRVlfU2Nyb2xsX0xvY2ssIElCVVNfS0VZX1N5c19SZXEsCi0rICAgICAgICBJQlVTX0tF WV9UYWIsIElCVVNfS0VZX0lTT19MZWZ0X1RhYiwgSUJVU19LRVlfS1BfVGFiLAotKyAgICAgICAg SUJVU19LRVlfRmlyc3RfVmlydHVhbF9TY3JlZW4sIElCVVNfS0VZX1ByZXZfVmlydHVhbF9TY3Jl ZW4sCi0rICAgICAgICBJQlVTX0tFWV9OZXh0X1ZpcnR1YWxfU2NyZWVuLCBJQlVTX0tFWV9MYXN0 X1ZpcnR1YWxfU2NyZWVuLAotKyAgICAgICAgSUJVU19LRVlfVGVybWluYXRlX1NlcnZlciwgSUJV U19LRVlfQXVkaWJsZUJlbGxfRW5hYmxlLAotKyAgICAgICAgMAotKyAgICB9OwotKyAgICBzdGF0 aWMgY29uc3QgZ3VpbnQgaW52YWxpZF91bm1vZGlmaWVkX3ZhbHNbXSA9IHsKLSsgICAgICAgIElC VVNfS0VZX1VwLCBJQlVTX0tFWV9Eb3duLCBJQlVTX0tFWV9MZWZ0LCBJQlVTX0tFWV9SaWdodCwK LSsgICAgICAgIElCVVNfS0VZX0tQX1VwLCBJQlVTX0tFWV9LUF9Eb3duLCBJQlVTX0tFWV9LUF9M ZWZ0LCBJQlVTX0tFWV9LUF9SaWdodCwKLSsgICAgICAgIDAKLSsgICAgfTsKLSsgICAgY29uc3Qg Z3VpbnQgKmFjX3ZhbDsKLSsKLSsgICAgbW9kaWZpZXJzICY9IElCVVNfTU9ESUZJRVJfTUFTSzsK LSsKLSsgICAgaWYgKGtleXZhbCA8PSAweEZGKQotKyAgICAgICAgcmV0dXJuIGtleXZhbCA+PSAw eDIwOwotKwotKyAgICBhY192YWwgPSBpbnZhbGlkX2FjY2VsZXJhdG9yX3ZhbHM7Ci0rICAgIHdo aWxlICgqYWNfdmFsKSB7Ci0rICAgICAgICBpZiAoa2V5dmFsID09ICphY192YWwrKykKLSsgICAg ICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFtb2RpZmllcnMpIHsK LSsgICAgICAgIGFjX3ZhbCA9IGludmFsaWRfdW5tb2RpZmllZF92YWxzOwotKyAgICAgICAgd2hp bGUgKCphY192YWwpIHsKLSsgICAgICAgICAgICBpZiAoa2V5dmFsID09ICphY192YWwrKykKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAg IHJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfYWx0IChj b25zdCBnY2hhciAqc3RyaW5nKQotK3sKLSsgICAgcmV0dXJuICgoc3RyaW5nWzBdID09ICc8Jykg JiYKLSsgICAgICAgICAgICAoc3RyaW5nWzFdID09ICdhJyB8fCBzdHJpbmdbMV0gPT0gJ0EnKSAm JgotKyAgICAgICAgICAgIChzdHJpbmdbMl0gPT0gJ2wnIHx8IHN0cmluZ1syXSA9PSAnTCcpICYm Ci0rICAgICAgICAgICAgKHN0cmluZ1szXSA9PSAndCcgfHwgc3RyaW5nWzNdID09ICdUJykgJiYK LSsgICAgICAgICAgICAoc3RyaW5nWzRdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5l IGdib29sZWFuCi0raXNfY3RsIChjb25zdCBnY2hhciAqc3RyaW5nKQotK3sKLSsgICAgcmV0dXJu ICgoc3RyaW5nWzBdID09ICc8JykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzFdID09ICdjJyB8 fCBzdHJpbmdbMV0gPT0gJ0MnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbMl0gPT0gJ3QnIHx8 IHN0cmluZ1syXSA9PSAnVCcpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1szXSA9PSAnbCcgfHwg c3RyaW5nWzNdID09ICdMJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzRdID09ICc+JykpOwot K30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfbW9keCAoY29uc3QgZ2NoYXIgKnN0 cmluZykKLSt7Ci0rICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCi0rICAgICAgICAg ICAgKHN0cmluZ1sxXSA9PSAnbScgfHwgc3RyaW5nWzFdID09ICdNJykgJiYKLSsgICAgICAgICAg ICAoc3RyaW5nWzJdID09ICdvJyB8fCBzdHJpbmdbMl0gPT0gJ08nKSAmJgotKyAgICAgICAgICAg IChzdHJpbmdbM10gPT0gJ2QnIHx8IHN0cmluZ1szXSA9PSAnRCcpICYmCi0rICAgICAgICAgICAg KHN0cmluZ1s0XSA+PSAnMScgJiYgc3RyaW5nWzRdIDw9ICc1JykgJiYKLSsgICAgICAgICAgICAo c3RyaW5nWzVdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNf Y3RybCAoY29uc3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAgIHJldHVybiAoKHN0cmluZ1swXSA9 PSAnPCcpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAnYycgfHwgc3RyaW5nWzFdID09 ICdDJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzJdID09ICd0JyB8fCBzdHJpbmdbMl0gPT0g J1QnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ3InIHx8IHN0cmluZ1szXSA9PSAn UicpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAnbCcgfHwgc3RyaW5nWzRdID09ICdM JykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMg aW5saW5lIGdib29sZWFuCi0raXNfc2hmdCAoY29uc3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAg IHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1sxXSA9 PSAncycgfHwgc3RyaW5nWzFdID09ICdTJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzJdID09 ICdoJyB8fCBzdHJpbmdbMl0gPT0gJ0gnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0g J2YnIHx8IHN0cmluZ1szXSA9PSAnRicpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAn dCcgfHwgc3RyaW5nWzRdID09ICdUJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+ JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfc2hpZnQgKGNvbnN0IGdj aGFyICpzdHJpbmcpCi0rewotKyAgICByZXR1cm4gKChzdHJpbmdbMF0gPT0gJzwnKSAmJgotKyAg ICAgICAgICAgIChzdHJpbmdbMV0gPT0gJ3MnIHx8IHN0cmluZ1sxXSA9PSAnUycpICYmCi0rICAg ICAgICAgICAgKHN0cmluZ1syXSA9PSAnaCcgfHwgc3RyaW5nWzJdID09ICdIJykgJiYKLSsgICAg ICAgICAgICAoc3RyaW5nWzNdID09ICdpJyB8fCBzdHJpbmdbM10gPT0gJ0knKSAmJgotKyAgICAg ICAgICAgIChzdHJpbmdbNF0gPT0gJ2YnIHx8IHN0cmluZ1s0XSA9PSAnRicpICYmCi0rICAgICAg ICAgICAgKHN0cmluZ1s1XSA9PSAndCcgfHwgc3RyaW5nWzVdID09ICdUJykgJiYKLSsgICAgICAg ICAgICAoc3RyaW5nWzZdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFu Ci0raXNfY29udHJvbCAoY29uc3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAgIHJldHVybiAoKHN0 cmluZ1swXSA9PSAnPCcpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAnYycgfHwgc3Ry aW5nWzFdID09ICdDJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdvJyB8fCBzdHJp bmdbMl0gPT0gJ08nKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ24nIHx8IHN0cmlu Z1szXSA9PSAnTicpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAndCcgfHwgc3RyaW5n WzRdID09ICdUJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzVdID09ICdyJyB8fCBzdHJpbmdb NV0gPT0gJ1InKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbNl0gPT0gJ28nIHx8IHN0cmluZ1s2 XSA9PSAnTycpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s3XSA9PSAnbCcgfHwgc3RyaW5nWzdd ID09ICdMJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzhdID09ICc+JykpOwotK30KLSsKLStz dGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfcmVsZWFzZSAoY29uc3QgZ2NoYXIgKnN0cmluZykK LSt7Ci0rICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCi0rICAgICAgICAgICAgKHN0 cmluZ1sxXSA9PSAncicgfHwgc3RyaW5nWzFdID09ICdSJykgJiYKLSsgICAgICAgICAgICAoc3Ry aW5nWzJdID09ICdlJyB8fCBzdHJpbmdbMl0gPT0gJ0UnKSAmJgotKyAgICAgICAgICAgIChzdHJp bmdbM10gPT0gJ2wnIHx8IHN0cmluZ1szXSA9PSAnTCcpICYmCi0rICAgICAgICAgICAgKHN0cmlu Z1s0XSA9PSAnZScgfHwgc3RyaW5nWzRdID09ICdFJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5n WzVdID09ICdhJyB8fCBzdHJpbmdbNV0gPT0gJ0EnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdb Nl0gPT0gJ3MnIHx8IHN0cmluZ1s2XSA9PSAnUycpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s3 XSA9PSAnZScgfHwgc3RyaW5nWzddID09ICdFJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzhd ID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfbWV0YSAoY29u c3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYm Ci0rICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAnbScgfHwgc3RyaW5nWzFdID09ICdNJykgJiYK LSsgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdlJyB8fCBzdHJpbmdbMl0gPT0gJ0UnKSAmJgot KyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ3QnIHx8IHN0cmluZ1szXSA9PSAnVCcpICYmCi0r ICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAnYScgfHwgc3RyaW5nWzRdID09ICdBJykgJiYKLSsg ICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdi b29sZWFuCi0raXNfc3VwZXIgKGNvbnN0IGdjaGFyICpzdHJpbmcpCi0rewotKyAgICByZXR1cm4g KChzdHJpbmdbMF0gPT0gJzwnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbMV0gPT0gJ3MnIHx8 IHN0cmluZ1sxXSA9PSAnUycpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1syXSA9PSAndScgfHwg c3RyaW5nWzJdID09ICdVJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzNdID09ICdwJyB8fCBz dHJpbmdbM10gPT0gJ1AnKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbNF0gPT0gJ2UnIHx8IHN0 cmluZ1s0XSA9PSAnRScpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s1XSA9PSAncicgfHwgc3Ry aW5nWzVdID09ICdSJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzZdID09ICc+JykpOwotK30K LSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfaHlwZXIgKGNvbnN0IGdjaGFyICpzdHJp bmcpCi0rewotKyAgICByZXR1cm4gKChzdHJpbmdbMF0gPT0gJzwnKSAmJgotKyAgICAgICAgICAg IChzdHJpbmdbMV0gPT0gJ2gnIHx8IHN0cmluZ1sxXSA9PSAnSCcpICYmCi0rICAgICAgICAgICAg KHN0cmluZ1syXSA9PSAneScgfHwgc3RyaW5nWzJdID09ICdZJykgJiYKLSsgICAgICAgICAgICAo c3RyaW5nWzNdID09ICdwJyB8fCBzdHJpbmdbM10gPT0gJ1AnKSAmJgotKyAgICAgICAgICAgIChz dHJpbmdbNF0gPT0gJ2UnIHx8IHN0cmluZ1s0XSA9PSAnRScpICYmCi0rICAgICAgICAgICAgKHN0 cmluZ1s1XSA9PSAncicgfHwgc3RyaW5nWzVdID09ICdSJykgJiYKLSsgICAgICAgICAgICAoc3Ry aW5nWzZdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdib29sZWFuCi0raXNfcHJp bWFyeSAoY29uc3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAgIHJldHVybiAoKHN0cmluZ1swXSA9 PSAnPCcpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAncCcgfHwgc3RyaW5nWzFdID09 ICdQJykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdyJyB8fCBzdHJpbmdbMl0gPT0g J1InKSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ2knIHx8IHN0cmluZ1szXSA9PSAn SScpICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAnbScgfHwgc3RyaW5nWzRdID09ICdN JykgJiYKLSsgICAgICAgICAgICAoc3RyaW5nWzVdID09ICdhJyB8fCBzdHJpbmdbNV0gPT0gJ0En KSAmJgotKyAgICAgICAgICAgIChzdHJpbmdbNl0gPT0gJ3InIHx8IHN0cmluZ1s2XSA9PSAnUicp ICYmCi0rICAgICAgICAgICAgKHN0cmluZ1s3XSA9PSAneScgfHwgc3RyaW5nWzddID09ICdZJykg JiYKLSsgICAgICAgICAgICAoc3RyaW5nWzhdID09ICc+JykpOwotK30KLSsKLStzdGF0aWMgaW5s aW5lIGdib29sZWFuCi0raXNfa2V5Y29kZSAoY29uc3QgZ2NoYXIgKnN0cmluZykKLSt7Ci0rICAg IHJldHVybiAoc3RyaW5nWzBdID09ICcwJyAmJgotKyAgICAgICAgICAgIHN0cmluZ1sxXSA9PSAn eCcgJiYKLSsgICAgICAgICAgICBnX2FzY2lpX2lzeGRpZ2l0IChzdHJpbmdbMl0pICYmCi0rICAg ICAgICAgICAgZ19hc2NpaV9pc3hkaWdpdCAoc3RyaW5nWzNdKSk7Ci0rfQotKwotKy8qKgotKyAq IGlidXNfYWNjZWxlcmF0b3JfcGFyc2U6Ci0rICogQGFjY2VsZXJhdG9yOiBzdHJpbmcgcmVwcmVz ZW50aW5nIGFuIGFjY2VsZXJhdG9yCi0rICogQGFjY2VsZXJhdG9yX2tleTogKG91dCkgKGFsbG93 LW5vbmUpOiByZXR1cm4gbG9jYXRpb24gZm9yIGFjY2VsZXJhdG9yCi0rICogICAgIGtleXZhbCwg b3IgJU5VTEwKLSsgKiBAYWNjZWxlcmF0b3JfbW9kczogKG91dCkgKGFsbG93LW5vbmUpOiByZXR1 cm4gbG9jYXRpb24gZm9yIGFjY2VsZXJhdG9yCi0rICogICAgIG1vZGlmaWVyIG1hc2ssICVOVUxM Ci0rICoKLSsgKiBQYXJzZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGFuIGFjY2VsZXJhdG9yLiBU aGUgZm9ybWF0IGxvb2tzIGxpa2UKLSsgKiDigJw8Q29udHJvbD5h4oCdIG9yIOKAnDxTaGlmdD48 QWx0PkYx4oCdIG9yIOKAnDxSZWxlYXNlPnrigJ0gKHRoZSBsYXN0IG9uZSBpcwotKyAqIGZvciBr ZXkgcmVsZWFzZSkuCi0rICoKLSsgKiBUaGUgcGFyc2VyIGlzIGZhaXJseSBsaWJlcmFsIGFuZCBh bGxvd3MgbG93ZXIgb3IgdXBwZXIgY2FzZSwgYW5kIGFsc28KLSsgKiBhYmJyZXZpYXRpb25zIHN1 Y2ggYXMg4oCcPEN0bD7igJ0gYW5kIOKAnDxDdHJsPuKAnS4gS2V5IG5hbWVzIGFyZSBwYXJzZWQg dXNpbmcKLSsgKiBnZGtfa2V5dmFsX2Zyb21fbmFtZSgpLiBGb3IgY2hhcmFjdGVyIGtleXMgdGhl IG5hbWUgaXMgbm90IHRoZSBzeW1ib2wsCi0rICogYnV0IHRoZSBsb3dlcmNhc2UgbmFtZSwgZS5n LiBvbmUgd291bGQgdXNlIOKAnDxDdHJsPm1pbnVz4oCdIGluc3RlYWQgb2YKLSsgKiDigJw8Q3Ry bD4t4oCdLgotKyAqCi0rICogSWYgdGhlIHBhcnNlIGZhaWxzLCBAYWNjZWxlcmF0b3Jfa2V5IGFu ZCBAYWNjZWxlcmF0b3JfbW9kcyB3aWxsCi0rICogYmUgc2V0IHRvIDAgKHplcm8pLgotKyAqCi0r ICogU2luY2U6IDEuNS4xOAotKyAqLwotK3ZvaWQKLStpYnVzX2FjY2VsZXJhdG9yX3BhcnNlIChj b25zdCBnY2hhciAgICAgICphY2NlbGVyYXRvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICphY2NlbGVyYXRvcl9rZXksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgSUJ1c01vZGlmaWVyVHlwZSAqYWNjZWxlcmF0b3JfbW9kcykKLSt7Ci0rICAgIGd1aW50IGtl eXZhbDsKLSsgICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RzOwotKyAgICBnaW50IGxlbjsKLSsgICAg Z2Jvb2xlYW4gZXJyb3I7Ci0rCi0rICAgIGlmIChhY2NlbGVyYXRvcl9rZXkpCi0rICAgICAgICAq YWNjZWxlcmF0b3Jfa2V5ID0gMDsKLSsgICAgaWYgKGFjY2VsZXJhdG9yX21vZHMpCi0rICAgICAg ICAqYWNjZWxlcmF0b3JfbW9kcyA9IDA7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFjY2VsZXJh dG9yICE9IE5VTEwpOwotKwotKyAgICBlcnJvciA9IEZBTFNFOwotKyAgICBrZXl2YWwgPSAwOwot KyAgICBtb2RzID0gMDsKLSsgICAgbGVuID0gc3RybGVuIChhY2NlbGVyYXRvcik7Ci0rICAgIHdo aWxlIChsZW4pIHsKLSsgICAgICAgIGlmICgqYWNjZWxlcmF0b3IgPT0gJzwnKSB7Ci0rICAgICAg ICAgICAgaWYgKGxlbiA+PSA5ICYmIGlzX3JlbGVhc2UgKGFjY2VsZXJhdG9yKSkgewotKyAgICAg ICAgICAgICAgICBhY2NlbGVyYXRvciArPSA5OwotKyAgICAgICAgICAgICAgICBsZW4gLT0gOTsK LSsgICAgICAgICAgICAgICAgbW9kcyB8PSBJQlVTX1JFTEVBU0VfTUFTSzsKLSsgICAgICAgICAg ICB9IGVsc2UgaWYgKGxlbiA+PSA5ICYmIGlzX3ByaW1hcnkgKGFjY2VsZXJhdG9yKSkgewotKyAg ICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA5OwotKyAgICAgICAgICAgICAgICBsZW4gLT0g OTsKLSsgICAgICAgICAgICAgICAgbW9kcyB8PSBfSUJVU19HRVRfUFJJTUFSWV9BQ0NFTF9NT0Q7 Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gOSAmJiBpc19jb250cm9sIChhY2NlbGVy YXRvcikpIHsKLSsgICAgICAgICAgICAgICAgYWNjZWxlcmF0b3IgKz0gOTsKLSsgICAgICAgICAg ICAgICAgbGVuIC09IDk7Ci0rICAgICAgICAgICAgICAgIG1vZHMgfD0gSUJVU19DT05UUk9MX01B U0s7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNyAmJiBpc19zaGlmdCAoYWNjZWxl cmF0b3IpKSB7Ci0rICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDc7Ci0rICAgICAgICAg ICAgICAgIGxlbiAtPSA3OwotKyAgICAgICAgICAgICAgICBtb2RzIHw9IElCVVNfU0hJRlRfTUFT SzsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA+PSA2ICYmIGlzX3NoZnQgKGFjY2VsZXJh dG9yKSkgewotKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA2OwotKyAgICAgICAgICAg ICAgICBsZW4gLT0gNjsKLSsgICAgICAgICAgICAgICAgbW9kcyB8PSBJQlVTX1NISUZUX01BU0s7 Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNiAmJiBpc19jdHJsIChhY2NlbGVyYXRv cikpIHsKLSsgICAgICAgICAgICAgICAgYWNjZWxlcmF0b3IgKz0gNjsKLSsgICAgICAgICAgICAg ICAgbGVuIC09IDY7Ci0rICAgICAgICAgICAgICAgIG1vZHMgfD0gSUJVU19DT05UUk9MX01BU0s7 Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNiAmJiBpc19tb2R4IChhY2NlbGVyYXRv cikpIHsKLSsgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGd1aW50IG1vZF92YWxzW10gPSB7 Ci0rICAgICAgICAgICAgICAgICAgICBJQlVTX01PRDFfTUFTSywgSUJVU19NT0QyX01BU0ssIElC VVNfTU9EM19NQVNLLAotKyAgICAgICAgICAgICAgICAgICAgSUJVU19NT0Q0X01BU0ssIElCVVNf TU9ENV9NQVNLCi0rICAgICAgICAgICAgICAgIH07Ci0rCi0rICAgICAgICAgICAgICAgIGxlbiAt PSA2OwotKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA0OwotKyAgICAgICAgICAgICAg ICBtb2RzIHw9IG1vZF92YWxzWyphY2NlbGVyYXRvciAtICcxJ107Ci0rICAgICAgICAgICAgICAg IGFjY2VsZXJhdG9yICs9IDI7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNSAmJiBp c19jdGwgKGFjY2VsZXJhdG9yKSkgewotKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA1 OwotKyAgICAgICAgICAgICAgICBsZW4gLT0gNTsKLSsgICAgICAgICAgICAgICAgbW9kcyB8PSBJ QlVTX0NPTlRST0xfTUFTSzsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA+PSA1ICYmIGlz X2FsdCAoYWNjZWxlcmF0b3IpKSB7Ci0rICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDU7 Ci0rICAgICAgICAgICAgICAgIGxlbiAtPSA1OwotKyAgICAgICAgICAgICAgICBtb2RzIHw9IElC VVNfTU9EMV9NQVNLOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuID49IDYgJiYgaXNfbWV0 YSAoYWNjZWxlcmF0b3IpKSB7Ci0rICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDY7Ci0r ICAgICAgICAgICAgICAgIGxlbiAtPSA2OwotKyAgICAgICAgICAgICAgICBtb2RzIHw9IElCVVNf TUVUQV9NQVNLOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuID49IDcgJiYgaXNfaHlwZXIg KGFjY2VsZXJhdG9yKSkgewotKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA3OwotKyAg ICAgICAgICAgICAgICBsZW4gLT0gNzsKLSsgICAgICAgICAgICAgICAgbW9kcyB8PSBJQlVTX0hZ UEVSX01BU0s7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNyAmJiBpc19zdXBlciAo YWNjZWxlcmF0b3IpKSB7Ci0rICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDc7Ci0rICAg ICAgICAgICAgICAgIGxlbiAtPSA3OwotKyAgICAgICAgICAgICAgICBtb2RzIHw9IElCVVNfU1VQ RVJfTUFTSzsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBnY2hhciBs YXN0X2NoOwotKwotKyAgICAgICAgICAgICAgICBsYXN0X2NoID0gKmFjY2VsZXJhdG9yOwotKyAg ICAgICAgICAgICAgICB3aGlsZSAobGFzdF9jaCAmJiBsYXN0X2NoICE9ICc+JykgewotKyAgICAg ICAgICAgICAgICAgICAgbGFzdF9jaCA9ICphY2NlbGVyYXRvcjsKLSsgICAgICAgICAgICAgICAg ICAgIGFjY2VsZXJhdG9yICs9IDE7Ci0rICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMTsKLSsg ICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0gZWxzZSB7Ci0rICAg ICAgICAgICAgaWYgKGxlbiA+PSA0ICYmIGlzX2tleWNvZGUgKGFjY2VsZXJhdG9yKSkgewotKyAg ICAgICAgICAgICAgICAvKiBUaGVyZSB3YXMgYSBrZXljb2RlIGluIHRoZSBzdHJpbmcsIGJ1dAot KyAgICAgICAgICAgICAgICAgKiB3ZSBjYW5ub3Qgc3RvcmUgaXQsIHNvIHdlIGhhdmUgYW4gZXJy b3IgKi8KLSsgICAgICAgICAgICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgICAgICAgICAgICBn b3RvIG91dDsKLSsgICAgICAgICAgICB9IGVsc2UgewotKwkgICAgICAgIGtleXZhbCA9IGlidXNf a2V5dmFsX2Zyb21fbmFtZSAoYWNjZWxlcmF0b3IpOwotKwkgICAgICAgIGlmIChrZXl2YWwgPT0g SUJVU19LRVlfVm9pZFN5bWJvbCkgewotKwkgICAgICAgICAgICBlcnJvciA9IFRSVUU7Ci0rCSAg ICAgICAgICAgIGdvdG8gb3V0OwotKwkJfQotKwkgICAgfQotKwotKyAgICAgICAgICAgIGFjY2Vs ZXJhdG9yICs9IGxlbjsKLSsgICAgICAgICAgICBsZW4gLT0gbGVuOwotKyAgICAgICAgfQotKyAg ICB9Ci0rCi0rb3V0OgotKyAgICBpZiAoZXJyb3IpCi0rICAgICAgICBrZXl2YWwgPSBtb2RzID0g MDsKLSsKLSsgICAgaWYgKGFjY2VsZXJhdG9yX2tleSkKLSsgICAgICAgICphY2NlbGVyYXRvcl9r ZXkgPSBpYnVzX2tleXZhbF90b19sb3dlciAoa2V5dmFsKTsKLSsgICAgaWYgKGFjY2VsZXJhdG9y X21vZHMpCi0rICAgICAgICAqYWNjZWxlcmF0b3JfbW9kcyA9IG1vZHM7Ci0rfQotKwotKy8qKgot KyAqIGlidXNfYWNjZWxlcmF0b3JfbmFtZToKLSsgKiBAYWNjZWxlcmF0b3Jfa2V5OiBhY2NlbGVy YXRvciBrZXl2YWwKLSsgKiBAYWNjZWxlcmF0b3JfbW9kczogYWNjZWxlcmF0b3IgbW9kaWZpZXIg bWFzawotKyAqCi0rICogQ29udmVydHMgYW4gYWNjZWxlcmF0b3Iga2V5dmFsIGFuZCBtb2RpZmll ciBtYXNrIGludG8gYSBzdHJpbmcKLSsgKiBwYXJzZWFibGUgYnkgZ3RrX2FjY2VsZXJhdG9yX3Bh cnNlKCkuIEZvciBleGFtcGxlLCBpZiB5b3UgcGFzcyBpbgotKyAqICNJQlVTX0tFWV9xIGFuZCAj SUJVU19DT05UUk9MX01BU0ssIHRoaXMgZnVuY3Rpb24gcmV0dXJucyDigJw8Q29udHJvbD5x4oCd LgotKyAqCi0rICogSWYgeW91IG5lZWQgdG8gZGlzcGxheSBhY2NlbGVyYXRvcnMgaW4gdGhlIHVz ZXIgaW50ZXJmYWNlLAotKyAqIHNlZSBndGtfYWNjZWxlcmF0b3JfZ2V0X2xhYmVsKCkuCi0rICoK LSsgKiBSZXR1cm5zOiBhIG5ld2x5LWFsbG9jYXRlZCBhY2NlbGVyYXRvciBuYW1lCi0rICovCi0r Z2NoYXIqCi0raWJ1c19hY2NlbGVyYXRvcl9uYW1lIChndWludCAgICAgICAgICAgIGFjY2VsZXJh dG9yX2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgIElCdXNNb2RpZmllclR5cGUgYWNjZWxl cmF0b3JfbW9kcykKLSt7Ci0rICAgc3RhdGljIGNvbnN0IGdjaGFyIHRleHRfcmVsZWFzZVtdID0g IjxSZWxlYXNlPiI7Ci0rICAgc3RhdGljIGNvbnN0IGdjaGFyIHRleHRfcHJpbWFyeVtdID0gIjxQ cmltYXJ5PiI7Ci0rICAgc3RhdGljIGNvbnN0IGdjaGFyIHRleHRfc2hpZnRbXSA9ICI8U2hpZnQ+ IjsKLSsgICBzdGF0aWMgY29uc3QgZ2NoYXIgdGV4dF9jb250cm9sW10gPSAiPENvbnRyb2w+IjsK LSsgICBzdGF0aWMgY29uc3QgZ2NoYXIgdGV4dF9tb2QxW10gPSAiPEFsdD4iOwotKyAgIHN0YXRp YyBjb25zdCBnY2hhciB0ZXh0X21vZDJbXSA9ICI8TW9kMj4iOwotKyAgIHN0YXRpYyBjb25zdCBn Y2hhciB0ZXh0X21vZDNbXSA9ICI8TW9kMz4iOwotKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0 X21vZDRbXSA9ICI8TW9kND4iOwotKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X21vZDVbXSA9 ICI8TW9kNT4iOwotKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X21ldGFbXSA9ICI8TWV0YT4i OwotKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X3N1cGVyW10gPSAiPFN1cGVyPiI7Ci0rICAg c3RhdGljIGNvbnN0IGdjaGFyIHRleHRfaHlwZXJbXSA9ICI8SHlwZXI+IjsKLSsgICBJQnVzTW9k aWZpZXJUeXBlIHNhdmVkX21vZHM7Ci0rICAgZ3VpbnQgbDsKLSsgICBjb25zdCBnY2hhciAqa2V5 dmFsX25hbWU7Ci0rICAgZ2NoYXIgKmFjY2VsZXJhdG9yOwotKwotKyAgICBhY2NlbGVyYXRvcl9t b2RzICY9IElCVVNfTU9ESUZJRVJfTUFTSzsKLSsKLSsgICAga2V5dmFsX25hbWUgPSBpYnVzX2tl eXZhbF9uYW1lIChpYnVzX2tleXZhbF90b19sb3dlciAoYWNjZWxlcmF0b3Jfa2V5KSk7Ci0rICAg IGlmICgha2V5dmFsX25hbWUpCi0rICAgICAgICBrZXl2YWxfbmFtZSA9ICIiOwotKwotKyAgICBz YXZlZF9tb2RzID0gYWNjZWxlcmF0b3JfbW9kczsKLSsgICAgbCA9IDA7Ci0rICAgIGlmIChhY2Nl bGVyYXRvcl9tb2RzICYgSUJVU19SRUxFQVNFX01BU0spCi0rICAgICAgICBsICs9IHNpemVvZiAo dGV4dF9yZWxlYXNlKSAtIDE7Ci0rICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgX0lCVVNfR0VU X1BSSU1BUllfQUNDRUxfTU9EKSB7Ci0rICAgICAgICBsICs9IHNpemVvZiAodGV4dF9wcmltYXJ5 KSAtIDE7Ci0rICAgICAgICAvKiBjb25zdW1lIHRoZSBkZWZhdWx0IGFjY2VsICovCi0rICAgICAg ICBhY2NlbGVyYXRvcl9tb2RzICY9IH5fSUJVU19HRVRfUFJJTUFSWV9BQ0NFTF9NT0Q7Ci0rICAg IH0KLSsgICAgaWYgKGFjY2VsZXJhdG9yX21vZHMgJiBJQlVTX1NISUZUX01BU0spCi0rICAgICAg ICBsICs9IHNpemVvZiAodGV4dF9zaGlmdCkgLSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfQ09OVFJPTF9NQVNLKQotKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfY29udHJv bCkgLSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EMV9NQVNLKQotKyAg ICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kMSkgLSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3Jf bW9kcyAmIElCVVNfTU9EMl9NQVNLKQotKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kMikg LSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EM19NQVNLKQotKyAgICAg ICAgbCArPSBzaXplb2YgKHRleHRfbW9kMykgLSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfTU9ENF9NQVNLKQotKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kNCkgLSAx OwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9ENV9NQVNLKQotKyAgICAgICAg bCArPSBzaXplb2YgKHRleHRfbW9kNSkgLSAxOwotKyAgICBsICs9IHN0cmxlbiAoa2V5dmFsX25h bWUpOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTUVUQV9NQVNLKQotKyAgICAg ICAgbCArPSBzaXplb2YgKHRleHRfbWV0YSkgLSAxOwotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfSFlQRVJfTUFTSykKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X2h5cGVyKSAt IDE7Ci0rICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgSUJVU19TVVBFUl9NQVNLKQotKyAgICAg ICAgbCArPSBzaXplb2YgKHRleHRfc3VwZXIpIC0gMTsKLSsKLSsgICAgYWNjZWxlcmF0b3IgPSBn X25ldyAoZ2NoYXIsIGwgKyAxKTsKLSsKLSsgICAgYWNjZWxlcmF0b3JfbW9kcyA9IHNhdmVkX21v ZHM7Ci0rICAgIGwgPSAwOwotKyAgICBhY2NlbGVyYXRvcltsXSA9IDA7Ci0rICAgIGlmIChhY2Nl bGVyYXRvcl9tb2RzICYgSUJVU19SRUxFQVNFX01BU0spIHsKLSsgICAgICAgIHN0cmNweSAoYWNj ZWxlcmF0b3IgKyBsLCB0ZXh0X3JlbGVhc2UpOwotKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRf cmVsZWFzZSkgLSAxOwotKyAgICB9Ci0rICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgX0lCVVNf R0VUX1BSSU1BUllfQUNDRUxfTU9EKSB7Ci0rICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsg bCwgdGV4dF9wcmltYXJ5KTsKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X3ByaW1hcnkpIC0g MTsKLSsgICAgICAgIC8qIGNvbnN1bWUgdGhlIGRlZmF1bHQgYWNjZWwgKi8KLSsgICAgICAgIGFj Y2VsZXJhdG9yX21vZHMgJj0gfl9JQlVTX0dFVF9QUklNQVJZX0FDQ0VMX01PRDsKLSsgICAgfQot KyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfU0hJRlRfTUFTSykgewotKyAgICAgICAg c3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRleHRfc2hpZnQpOwotKyAgICAgICAgbCArPSBzaXpl b2YgKHRleHRfc2hpZnQpIC0gMTsKLSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAm IElCVVNfQ09OVFJPTF9NQVNLKSB7Ci0rICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwg dGV4dF9jb250cm9sKTsKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X2NvbnRyb2wpIC0gMTsK LSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EMV9NQVNLKSB7Ci0r ICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tb2QxKTsKLSsgICAgICAgIGwg Kz0gc2l6ZW9mICh0ZXh0X21vZDEpIC0gMTsKLSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3Jf bW9kcyAmIElCVVNfTU9EMl9NQVNLKSB7Ci0rICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsg bCwgdGV4dF9tb2QyKTsKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21vZDIpIC0gMTsKLSsg ICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EM19NQVNLKSB7Ci0rICAg ICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tb2QzKTsKLSsgICAgICAgIGwgKz0g c2l6ZW9mICh0ZXh0X21vZDMpIC0gMTsKLSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfTU9ENF9NQVNLKSB7Ci0rICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwg dGV4dF9tb2Q0KTsKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21vZDQpIC0gMTsKLSsgICAg fQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAg ICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tb2Q1KTsKLSsgICAgICAgIGwgKz0gc2l6 ZW9mICh0ZXh0X21vZDUpIC0gMTsKLSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAm IElCVVNfTUVUQV9NQVNLKSB7Ci0rICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4 dF9tZXRhKTsKLSsgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21ldGEpIC0gMTsKLSsgICAgfQot KyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfSFlQRVJfTUFTSykgewotKyAgICAgICAg c3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRleHRfaHlwZXIpOwotKyAgICAgICAgbCArPSBzaXpl b2YgKHRleHRfaHlwZXIpIC0gMTsKLSsgICAgfQotKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAm IElCVVNfU1VQRVJfTUFTSykgewotKyAgICAgICAgc3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRl eHRfc3VwZXIpOwotKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfc3VwZXIpIC0gMTsKLSsgICAg fQotKyAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwga2V5dmFsX25hbWUpOwotKwotKyAgICBy ZXR1cm4gYWNjZWxlcmF0b3I7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzYWNjZWxncm91cC5o IGIvc3JjL2lidXNhY2NlbGdyb3VwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwMC4uY2IzOGJlZTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9pYnVzYWNjZWxncm91cC5o Ci1AQCAtMCwwICsxLDUxIEBACi0rLyogR1RLIC0gVGhlIEdJTVAgVG9vbGtpdAotKyAqIENvcHly aWdodCAoQykgMTk5OCwgMjAwMSBUaW0gSmFuaWsKLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICog TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyCi0rICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlIEdO VQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r ICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyAqLwotKwotKy8qCi0r ICogTW9kaWZpZWQgYnkgdGhlIEdUSysgVGVhbSBhbmQgb3RoZXJzIDE5OTctMjAwMC4gIFNlZSB0 aGUgQVVUSE9SUwotKyAqIGZpbGUgZm9yIGEgbGlzdCBvZiBwZW9wbGUgb24gdGhlIEdUSysgVGVh bS4gIFNlZSB0aGUgQ2hhbmdlTG9nCi0rICogZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAg VGhlc2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGgKLSsgKiBHVEsrIGF0IGZ0cDovL2Z0cC5n dGsub3JnL3B1Yi9ndGsvLgotKyAqLwotKwotKyNpZm5kZWYgX19JQlVTX0FDQ0VMX0dST1VQX0hf Ci0rI2RlZmluZSBfX0lCVVNfQUNDRUxfR1JPVVBfSF8KLSsKLSsKLSsjaWYgIWRlZmluZWQgKF9f SUJVU19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZCAoSUJVU19DT01QSUxBVElPTikKLSsjZXJyb3Ig Ik9ubHkgPGlidXMuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5IgotKyNlbmRpZgotKwotKyNp bmNsdWRlIDxnbGliLmg+Ci0rI2luY2x1ZGUgPGlidXN0eXBlcy5oPgotKwotK0dfQkVHSU5fREVD TFMKLSsKLSsKLSsvKiAtLS0gQWNjZWxlcmF0b3JzLS0tICovCi0rZ2Jvb2xlYW4gaWJ1c19hY2Nl bGVyYXRvcl92YWxpZCAgICAgICAgICAgICAgIChndWludCAgICAgICAgICAgIGtleXZhbCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNNb2RpZmll clR5cGUgbW9kaWZpZXJzKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR19HTlVDX0NPTlNUOwotK3ZvaWQgICAgIGlidXNfYWNjZWxlcmF0b3JfcGFyc2Ug ICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAqYWNjZWxlcmF0b3IsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICph Y2NlbGVyYXRvcl9rZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzTW9kaWZpZXJUeXBlICphY2NlbGVyYXRvcl9tb2RzKTsKLStnY2hhciogICBp YnVzX2FjY2VsZXJhdG9yX25hbWUgICAgICAgICAgICAgICAgKGd1aW50ICAgICAgICAgICAgYWNj ZWxlcmF0b3Jfa2V5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUJ1c01vZGlmaWVyVHlwZSBhY2NlbGVyYXRvcl9tb2RzKTsKLSsKLStHX0VORF9ERUNM UwotKwotKyNlbmRpZiAvKiBfX0lCVVNfQUNDRUxfR1JPVVBfSF8gKi8KLWRpZmYgLS1naXQgYS9z cmMvaWJ1c2VuZ2luZS5jIGIvc3JjL2lidXNlbmdpbmUuYwotaW5kZXggZGE2NDhkMTEuLjlhMGIx YThhIDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmUuYwotKysrIGIvc3JjL2lidXNlbmdpbmUu YwotQEAgLTIwLDEyICsyMCwxNiBAQAotICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKLSAgKiBVU0EKLSAg Ki8KLS0jaW5jbHVkZSAiaWJ1c2VuZ2luZS5oIgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5j bHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgImlidXNhY2NlbGdyb3VwLmgiCi0rI2luY2x1 ZGUgImlidXNlbmdpbmUuaCIKLSsjaW5jbHVkZSAiaWJ1c2tleXN5bXMuaCIKLSAjaW5jbHVkZSAi aWJ1c21hcnNoYWxlcnMuaCIKLSAjaW5jbHVkZSAiaWJ1c2ludGVybmFsLmgiCi0gI2luY2x1ZGUg ImlidXNzaGFyZS5oIgotKyNpbmNsdWRlICJpYnVzeGV2ZW50LmgiCi0gCi0gI2RlZmluZSBJQlVT X0VOR0lORV9HRVRfUFJJVkFURShvKSAgXAotICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB VEUgKChvKSwgSUJVU19UWVBFX0VOR0lORSwgSUJ1c0VuZ2luZVByaXZhdGUpKQotQEAgLTYwLDYg KzY0LDggQEAgZW51bSB7Ci0gfTsKLSAKLSAKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c0VuZ2luZUtl eWJpbmRpbmcgSUJ1c0VuZ2luZUtleWJpbmRpbmc7Ci0rCi0gLyogSUJ1c0VuZ2luZVByaXYgKi8K LSBzdHJ1Y3QgX0lCdXNFbmdpbmVQcml2YXRlIHsKLSAgICAgZ2NoYXIgKmVuZ2luZV9uYW1lOwot QEAgLTc0LDExICs4MCwxOSBAQCBzdHJ1Y3QgX0lCdXNFbmdpbmVQcml2YXRlIHsKLSAgICAgLyog Y2FjaGVkIGNvbnRlbnQtdHlwZSAqLwotICAgICBndWludCBjb250ZW50X3B1cnBvc2U7Ci0gICAg IGd1aW50IGNvbnRlbnRfaGludHM7Ci0rCi0rICAgIEdTZXR0aW5ncyAgICAgICAgICAgICAqc2V0 dGluZ3NfZW1vamk7Ci0rICAgIElCdXNFbmdpbmVLZXliaW5kaW5nICoqZW1vamlfa2V5YmluZGlu Z3M7Ci0rfTsKLSsKLStzdHJ1Y3QgX0lCdXNFbmdpbmVLZXliaW5kaW5nIHsKLSsgICAgZ3VpbnQg ICAgICAgICAgICBrZXl2YWw7Ci0rICAgIElCdXNNb2RpZmllclR5cGUgbW9kaWZpZXJzOwotIH07 Ci0gCi0gc3RhdGljIGd1aW50ICAgICAgICAgICAgZW5naW5lX3NpZ25hbHNbTEFTVF9TSUdOQUxd ID0geyAwIH07Ci0gCi0tc3RhdGljIElCdXNUZXh0ICp0ZXh0X2VtcHR5ID0gTlVMTDsKLStzdGF0 aWMgSUJ1c1RleHQgKnRleHRfZW1wdHk7Ci0gCi0gLyogZnVuY3Rpb25zIHByb3RvdHlwZSAqLwot IHN0YXRpYyB2b2lkICAgICAgaWJ1c19lbmdpbmVfZGVzdHJveSAgICAgICAgIChJQnVzRW5naW5l ICAgICAgICAgKmVuZ2luZSk7Ci1AQCAtMTc2LDYgKzE5MCwxMSBAQCBzdGF0aWMgdm9pZCAgICAg IGlidXNfZW5naW5lX2RidXNfcHJvcGVydHlfY2hhbmdlZAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg ICAgICAgICpwcm9wZXJ0eV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAgKnZhbHVlKTsKLStzdGF0aWMgdm9pZCAg ICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdfZnJlZSAoSUJ1c0VuZ2luZSAgICAgICAgICplbmdp bmUpOwotK3N0YXRpYyB2b2lkICAgICAgc2V0dGluZ3NfZW1vamlfaG90a2V5X2NoYW5nZWRfY2Ig Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdTZXR0aW5n cyAgICAgICAgICAqc2V0dGluZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqa2V5LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIGRhdGEpOwot IAotIAotIEdfREVGSU5FX1RZUEUgKElCdXNFbmdpbmUsIGlidXNfZW5naW5lLCBJQlVTX1RZUEVf U0VSVklDRSkKLUBAIC0yNjMsMTEgKzI4MiwyNyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIgaW50cm9z cGVjdGlvbl94bWxbXSA9Ci0gICAgICIgICAgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2tleWNvZGUn IC8+IgotICAgICAiICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdzdGF0ZScgLz4iCi0gICAgICIg ICAgPC9zaWduYWw+IgotKyAgICAiICAgIDxzaWduYWwgbmFtZT0nUGFuZWxFeHRlbnNpb24nPiIK LSsgICAgIiAgICAgIDxhcmcgdHlwZT0ndicgbmFtZT0nZGF0YScgLz4iCi0rICAgICIgICAgPC9z aWduYWw+IgotICAgICAvKiBGSVhNRSBwcm9wZXJ0aWVzICovCi0gICAgICIgICAgPHByb3BlcnR5 IG5hbWU9J0NvbnRlbnRUeXBlJyB0eXBlPScodXUpJyBhY2Nlc3M9J3dyaXRlJyAvPiIKLSAgICAg IiAgPC9pbnRlcmZhY2U+IgotICAgICAiPC9ub2RlPiI7Ci0gCi0rc3RhdGljIGNvbnN0IGd1aW50 IElCVVNfTU9ESUZJRVJfRklMVEVSID0KLSsgICAgICAgIElCVVNfTU9ESUZJRVJfTUFTSyAmIH4o Ci0rICAgICAgICBJQlVTX0xPQ0tfTUFTSyB8ICAvKiBDYXBzIExvY2sgKi8KLSsgICAgICAgIElC VVNfTU9EMl9NQVNLIHwgIC8qIE51bSBMb2NrICovCi0rICAgICAgICBJQlVTX0JVVFRPTjFfTUFT SyB8Ci0rICAgICAgICBJQlVTX0JVVFRPTjJfTUFTSyB8Ci0rICAgICAgICBJQlVTX0JVVFRPTjNf TUFTSyB8Ci0rICAgICAgICBJQlVTX0JVVFRPTjRfTUFTSyB8Ci0rICAgICAgICBJQlVTX0JVVFRP TjVfTUFTSyB8Ci0rICAgICAgICBJQlVTX1NVUEVSX01BU0sgfAotKyAgICAgICAgSUJVU19IWVBF Ul9NQVNLIHwKLSsgICAgICAgIElCVVNfTUVUQV9NQVNLKTsKLSsKLSBzdGF0aWMgdm9pZAotIGli dXNfZW5naW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVDbGFzcyAqY2xhc3MpCi0gewotQEAgLTgw Miw5ICs4MzcsMTUgQEAgaWJ1c19lbmdpbmVfY2xhc3NfaW5pdCAoSUJ1c0VuZ2luZUNsYXNzICpj bGFzcykKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX2luaXQgKElCdXNFbmdpbmUgKmVuZ2lu ZSkKLSB7Ci0tICAgIGVuZ2luZS0+cHJpdiA9IElCVVNfRU5HSU5FX0dFVF9QUklWQVRFIChlbmdp bmUpOwotLQotLSAgICBlbmdpbmUtPnByaXYtPnN1cnJvdW5kaW5nX3RleHQgPSBnX29iamVjdF9y ZWZfc2luayAodGV4dF9lbXB0eSk7Ci0rICAgIElCdXNFbmdpbmVQcml2YXRlICpwcml2OwotKyAg ICBlbmdpbmUtPnByaXYgPSBwcml2ID0gSUJVU19FTkdJTkVfR0VUX1BSSVZBVEUgKGVuZ2luZSk7 Ci0rCi0rICAgIHByaXYtPnN1cnJvdW5kaW5nX3RleHQgPSBnX29iamVjdF9yZWZfc2luayAodGV4 dF9lbXB0eSk7Ci0rICAgIHByaXYtPnNldHRpbmdzX2Vtb2ppID0KLSsgICAgICAgICAgICBnX3Nl dHRpbmdzX25ldyAoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppIik7Ci0rICAgIHNl dHRpbmdzX2Vtb2ppX2hvdGtleV9jaGFuZ2VkX2NiIChwcml2LT5zZXR0aW5nc19lbW9qaSwgImhv dGtleSIsIGVuZ2luZSk7Ci0rICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHByaXYtPnNldHRpbmdzX2Vt b2ppLCAiY2hhbmdlZDo6aG90a2V5IiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFD SyAoc2V0dGluZ3NfZW1vamlfaG90a2V5X2NoYW5nZWRfY2IpLCBlbmdpbmUpOwotIH0KLSAKLSBz dGF0aWMgdm9pZAotQEAgLTgxNyw2ICs4NTgsNyBAQCBpYnVzX2VuZ2luZV9kZXN0cm95IChJQnVz RW5naW5lICplbmdpbmUpCi0gICAgICAgICBnX29iamVjdF91bnJlZiAoZW5naW5lLT5wcml2LT5z dXJyb3VuZGluZ190ZXh0KTsKLSAgICAgICAgIGVuZ2luZS0+cHJpdi0+c3Vycm91bmRpbmdfdGV4 dCA9IE5VTEw7Ci0gICAgIH0KLSsgICAgaWJ1c19lbmdpbmVfa2V5YmluZGluZ19mcmVlIChlbmdp bmUpOwotIAotICAgICBJQlVTX09CSkVDVF9DTEFTUyhpYnVzX2VuZ2luZV9wYXJlbnRfY2xhc3Mp LT5kZXN0cm95IChJQlVTX09CSkVDVCAoZW5naW5lKSk7Ci0gfQotQEAgLTg1Miw2ICs4OTQsNTMg QEAgaWJ1c19lbmdpbmVfZ2V0X3Byb3BlcnR5IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgIH0K LSB9Ci0gCi0rc3RhdGljIHZvaWQKLStpYnVzX2VuZ2luZV9wYW5lbF9leHRlbnNpb24gKElCdXNF bmdpbmUgKmVuZ2luZSkKLSt7Ci0rICAgIElCdXNYRXZlbnQgKnhldmVudCA9IGlidXNfeF9ldmVu dF9uZXcgKAotKyAgICAgICAgICAgICJldmVudC10eXBlIiwgSUJVU19YX0VWRU5UX0tFWV9QUkVT UywKLSsgICAgICAgICAgICAicHVycG9zZSIsICJlbW9qaSIsCi0rICAgICAgICAgICAgTlVMTCk7 Ci0rICAgIEdWYXJpYW50ICpkYXRhID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplX29iamVj dCAoCi0rICAgICAgICAgICAgSUJVU19TRVJJQUxJWkFCTEUgKHhldmVudCkpOwotKwotKyAgICBn X2Fzc2VydCAoZGF0YSAhPSBOVUxMKTsKLSsgICAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwgKGVu Z2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYW5lbEV4dGVuc2lvbiIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgZGF0YSkp OwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX2VuZ2luZV9maWx0ZXJfa2V5X2V2ZW50 IChJQnVzRW5naW5lICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAga2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAg ICAgIGtleWNvZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAg c3RhdGUpCi0rewotKyAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdjsKLSsgICAgaW50IGk7Ci0r ICAgIGd1aW50IG1vZGlmaWVyczsKLSsKLSsgICAgaWYgKChzdGF0ZSAmIElCVVNfUkVMRUFTRV9N QVNLKSAhPSAwKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAoSUJVU19JU19FTkdJTkUgKGVuZ2luZSksIEZBTFNFKTsKLSsKLSsgICAgcHJpdiA9IGVu Z2luZS0+cHJpdjsKLSsgICAgbW9kaWZpZXJzID0gc3RhdGUgJiBJQlVTX01PRElGSUVSX0ZJTFRF UjsKLSsgICAgaWYgKGtleXZhbCA+PSBJQlVTX0tFWV9BICYmIGtleXZhbCA8PSBJQlVTX0tFWV9a ICYmCi0rICAgICAgICAobW9kaWZpZXJzICYgSUJVU19TSElGVF9NQVNLKSAhPSAwKSB7Ci0rICAg ICAgICBrZXl2YWwgPSBrZXl2YWwgLSBJQlVTX0tFWV9BICsgSUJVU19LRVlfYTsKLSsgICAgfQot KyAgICBmb3IgKGkgPSAwOyBwcml2LT5lbW9qaV9rZXliaW5kaW5nc1tpXTsgaSsrKSB7Ci0rICAg ICAgICBJQnVzRW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9IHByaXYtPmVtb2ppX2tleWJpbmRp bmdzW2ldOwotKyAgICAgICAgaWYgKGJpbmRpbmctPmtleXZhbCA9PSBrZXl2YWwgJiYKLSsgICAg ICAgICAgICBiaW5kaW5nLT5tb2RpZmllcnMgPT0gbW9kaWZpZXJzKSB7Ci0rICAgICAgICAgICAg aWJ1c19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uIChlbmdpbmUpOwotKyAgICAgICAgICAgIHJldHVy biBUUlVFOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiBGQUxTRTsKLSt9Ci0rCi0g c3RhdGljIGdib29sZWFuCi0gaWJ1c19lbmdpbmVfc2VydmljZV9hdXRob3JpemVkX21ldGhvZCAo SUJ1c1NlcnZpY2UgICAgICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKLUBAIC04OTIsNiArOTgxLDcg QEAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRob2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAg ICpzZXJ2aWNlLAotICAgICBpZiAoZ19zdHJjbXAwIChtZXRob2RfbmFtZSwgIlByb2Nlc3NLZXlF dmVudCIpID09IDApIHsKLSAgICAgICAgIGd1aW50IGtleXZhbCwga2V5Y29kZSwgc3RhdGU7Ci0g ICAgICAgICBnYm9vbGVhbiByZXR2YWwgPSBGQUxTRTsKLSsKLSAgICAgICAgIGdfdmFyaWFudF9n ZXQgKHBhcmFtZXRlcnMsICIodXV1KSIsICZrZXl2YWwsICZrZXljb2RlLCAmc3RhdGUpOwotICAg ICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgZW5n aW5lX3NpZ25hbHNbUFJPQ0VTU19LRVlfRVZFTlRdLAotQEAgLTkwMCw2ICs5OTAsMTIgQEAgaWJ1 c19lbmdpbmVfc2VydmljZV9tZXRob2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAgICpzZXJ2 aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgJnJldHZhbCk7Ci0rICAgICAg ICBpZiAoIXJldHZhbCkgewotKyAgICAgICAgICAgIHJldHZhbCA9IGlidXNfZW5naW5lX2ZpbHRl cl9rZXlfZXZlbnQgKGVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBrZXl2YWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBn X2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlIChpbnZvY2F0aW9uLCBnX3Zhcmlh bnRfbmV3ICgiKGIpIiwgcmV0dmFsKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLUBAIC0x MzM4LDYgKzE0MzQsNzkgQEAgaWJ1c19lbmdpbmVfZGJ1c19wcm9wZXJ0eV9jaGFuZ2VkIChJQnVz RW5naW5lICAqZW5naW5lLAotICAgICBnX29iamVjdF91bnJlZiAobWVzc2FnZSk7Ci0gfQotIAot K3N0YXRpYyB2b2lkCi0raWJ1c19lbmdpbmVfa2V5YmluZGluZ19mcmVlIChJQnVzRW5naW5lICpl bmdpbmUpCi0rewotKyAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdjsKLSsgICAgaW50IGk7Ci0r Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRU5HSU5FIChlbmdpbmUpKTsKLSsKLSsg ICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKLSsgICAgaWYgKHByaXYtPmVtb2ppX2tleWJpbmRpbmdz KSB7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBwcml2LT5lbW9qaV9rZXliaW5kaW5nc1tpXTsgaSsr KQotKyAgICAgICAgICAgIGdfc2xpY2VfZnJlZSAoSUJ1c0VuZ2luZUtleWJpbmRpbmcsIHByaXYt PmVtb2ppX2tleWJpbmRpbmdzW2ldKTsKLSsgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYt PmVtb2ppX2tleWJpbmRpbmdzLCBnX2ZyZWUpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBJQnVz RW5naW5lS2V5YmluZGluZyAqCi0raWJ1c19lbmdpbmVfa2V5YmluZGluZ19uZXcgKElCdXNFbmdp bmUgICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICph Y2NlbGVyYXRvcikKLSt7Ci0rICAgIGd1aW50IGtleXZhbCA9IDBVOwotKyAgICBJQnVzTW9kaWZp ZXJUeXBlIG1vZGlmaWVycyA9IDA7Ci0rICAgIElCdXNFbmdpbmVLZXliaW5kaW5nICpiaW5kaW5n ID0gTlVMTDsKLSsKLSsgICAgaWJ1c19hY2NlbGVyYXRvcl9wYXJzZSAoYWNjZWxlcmF0b3IsICZr ZXl2YWwsICZtb2RpZmllcnMpOwotKyAgICBpZiAoa2V5dmFsID09IDBVICYmIG1vZGlmaWVycyA9 PSAwKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gcGFyc2Ugc2hvcnRjdXQga2V5 ICclcyciLCBhY2NlbGVyYXRvcik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKyAg ICBpZiAobW9kaWZpZXJzICYgSUJVU19TVVBFUl9NQVNLKSB7Ci0rICAgICAgICBtb2RpZmllcnNe PUlCVVNfU1VQRVJfTUFTSzsKLSsgICAgICAgIG1vZGlmaWVyc3w9SUJVU19NT0Q0X01BU0s7Ci0r ICAgIH0KLSsKLSsgICAgYmluZGluZyA9IGdfc2xpY2VfbmV3MCAoSUJ1c0VuZ2luZUtleWJpbmRp bmcpOwotKyAgICBiaW5kaW5nLT5rZXl2YWwgPSBrZXl2YWw7Ci0rICAgIGJpbmRpbmctPm1vZGlm aWVycyA9IG1vZGlmaWVyczsKLSsgICAgcmV0dXJuIGJpbmRpbmc7Ci0rfQotKwotK3N0YXRpYyB2 b2lkCi0rc2V0dGluZ3NfZW1vamlfaG90a2V5X2NoYW5nZWRfY2IgKEdTZXR0aW5ncyAgICpzZXR0 aW5ncywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmtl eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgIGRhdGEp Ci0rewotKyAgICBJQnVzRW5naW5lICplbmdpbmU7Ci0rICAgIElCdXNFbmdpbmVQcml2YXRlICpw cml2OwotKyAgICBnY2hhciAqKmFjY2VsZXJhdG9yczsKLSsgICAgaW50IGksIGosIGxlbmd0aDsK LSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19FTkdJTkUgKGRhdGEpKTsKLSsgICAgZW5n aW5lID0gSUJVU19FTkdJTkUgKGRhdGEpOwotKyAgICBwcml2ID0gZW5naW5lLT5wcml2OwotKwot KyAgICBpZiAoZ19zdHJjbXAwIChrZXksICJob3RrZXkiKSAhPSAwKQotKyAgICAgICAgcmV0dXJu OwotKyAgICBhY2NlbGVyYXRvcnMgPSBnX3NldHRpbmdzX2dldF9zdHJ2IChzZXR0aW5ncywga2V5 KTsKLSsgICAgbGVuZ3RoID0gZ19zdHJ2X2xlbmd0aCAoYWNjZWxlcmF0b3JzKTsKLSsgICAgaWJ1 c19lbmdpbmVfa2V5YmluZGluZ19mcmVlIChlbmdpbmUpOwotKyAgICBpZiAobGVuZ3RoID09IDAp IHsKLSsgICAgICAgIGdfc3RyZnJlZXYgKGFjY2VsZXJhdG9ycyk7Ci0rICAgICAgICByZXR1cm47 Ci0rICAgIH0KLSsgICAgcHJpdi0+ZW1vamlfa2V5YmluZGluZ3MgPSBnX25ldzAgKElCdXNFbmdp bmVLZXliaW5kaW5nKiwgbGVuZ3RoICsgMSk7Ci0rICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwg bGVuZ3RoOyBpKyspIHsKLSsgICAgICAgIElCdXNFbmdpbmVLZXliaW5kaW5nICpiaW5kaW5nID0K LSsgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfa2V5YmluZGluZ19uZXcgKGVuZ2luZSwgYWNj ZWxlcmF0b3JzW2ldKTsKLSsgICAgICAgIGlmICghYmluZGluZykKLSsgICAgICAgICAgICBjb250 aW51ZTsKLSsgICAgICAgIHByaXYtPmVtb2ppX2tleWJpbmRpbmdzW2orK10gPSBiaW5kaW5nOwot KyAgICB9Ci0rICAgIGdfc3RyZnJlZXYgKGFjY2VsZXJhdG9ycyk7Ci0rfQotKwotIElCdXNFbmdp bmUgKgotIGlidXNfZW5naW5lX25ldyAoY29uc3QgZ2NoYXIgICAgICplbmdpbmVfbmFtZSwKLSAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqb2JqZWN0X3BhdGgsCi1kaWZmIC0tZ2l0 IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggYzg1 ZGZhODYuLjgyMTdhMDAwIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBi L3VpL2d0azMvZW1vamllci52YWxhCi1AQCAtMjA2Miw2ICsyMDYyLDcgQEAgcHVibGljIGNsYXNz IElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIC8vIERvIG5v dCBoaWRlIGEgYm90dG9tIHBhbmVsIGluIFhGQ0U0Ci0gICAgICAgICBpZiAod29ya19hcmVhLnkg PCB5KQotICAgICAgICAgICAgIHkgPSB3b3JrX2FyZWEueTsKLSsgICAgICAgIC8vIEZJWE1FOiBt b3ZlKCkgZG9lcyBub3Qgd29yayBpbiBXYXlsYW5kCi0gICAgICAgICBtb3ZlKHgsIHkpOwotIAot ICAgICAgICAgdWludDMyIHRpbWVzdGFtcCA9IGV2ZW50LmdldF90aW1lKCk7Ci1kaWZmIC0tZ2l0 IGEvdWkvZ3RrMy9leHRlbnNpb24udmFsYSBiL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKLWluZGV4 IGExNzAyODBiLi4wMzAyNmQwMCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEK LSsrKyBiL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKLUBAIC0xMTUsOCArMTE1LDkgQEAgY2xhc3Mg RXh0ZW5zaW9uR3RrIHsKLSAgICAgICAgIC8vIGFuZCBDdHJsLVNoaWZ0LWUgd2hlbiBpYnVzLXVp LWd0azMgcnVucyBhZnRlciB0aGUKLSAgICAgICAgIC8vIGRlc2t0b3AgaXMgbGF1bmNoZWQuCi0g ICAgICAgICBHTGliLkVudmlyb25tZW50LnVuc2V0X3ZhcmlhYmxlKCJHREtfQ09SRV9ERVZJQ0Vf RVZFTlRTIik7Ci0tICAgICAgICAvLyBmb3IgR2RrLlgxMS5nZXRfZGVmYXVsdF94ZGlzcGxheSgp Ci0tICAgICAgICBHZGsuc2V0X2FsbG93ZWRfYmFja2VuZHMoIngxMSIpOwotKyAgICAgICAgLy8g R2RrLnNldF9hbGxvd2VkX2JhY2tlbmRzKCJ4MTEiKSBsZXQgcHJlc2VudF93aXRoX3RpbWUoKSBm YWlsZWQgb24KLSsgICAgICAgIC8vIGxhdW5jaGluZyB0aGUgZGlhbG9nIHNlY29uZGx5IGluIFdh eWxhbmQuCi0rICAgICAgICAvL0dkay5zZXRfYWxsb3dlZF9iYWNrZW5kcygieDExIik7Ci0gCi0g ICAgICAgICBFeHRlbnNpb25HdGsgZXh0ZW5zaW9uID0gbmV3IEV4dGVuc2lvbkd0ayhhcmd2KTsK LSAgICAgICAgIGV4dGVuc2lvbi5ydW4oKTsKLWRpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsYmlu ZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQotaW5kZXggMWZiZjZjZmMuLmUz ZjM5ZTEyIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQotKysrIGIvdWkv Z3RrMy9wYW5lbGJpbmRpbmcudmFsYQotQEAgLTMzLDggKzMzLDYgQEAgY2xhc3MgUGFuZWxCaW5k aW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2YXRlIHN0cmluZ1tdIG1fZW1vamll cl9mYXZvcml0ZXMgPSB7fTsKLSAgICAgcHJpdmF0ZSBHdGsuQ3NzUHJvdmlkZXIgbV9jc3NfcHJv dmlkZXI7Ci0gICAgIHByaXZhdGUgY29uc3QgdWludCBQUkVMT0FEX0VOR0lORVNfREVMQVlfVElN RSA9IDMwMDAwOwotLSAgICBwcml2YXRlIEdMaWIuTGlzdDxCaW5kaW5nQ29tbW9uLktleWJpbmRp bmc+IG1fa2V5YmluZGluZ3MgPQotLSAgICAgICAgICAgIG5ldyBHTGliLkxpc3Q8QmluZGluZ0Nv bW1vbi5LZXliaW5kaW5nPigpOwotICAgICBwcml2YXRlIGJvb2wgbV9sb2FkX2Vtb2ppX2F0X3N0 YXJ0dXA7Ci0gICAgIHByaXZhdGUgYm9vbCBtX2xvYWRlZF9lbW9qaSA9IGZhbHNlOwotICAgICBw cml2YXRlIGJvb2wgbV9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cDsKLUBAIC00OSwxNSArNDcsNiBA QCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBtX2J1 cyA9IGJ1czsKLSAKLSAgICAgICAgIGluaXRfc2V0dGluZ3MoKTsKLS0KLS0gICAgICAgIGJpbmRf ZW1vamlfc2hvcnRjdXQoKTsKLS0gICAgfQotLQotLQotLSAgICB+UGFuZWxCaW5kaW5nKCkgewot LSAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KAotLSAgICAgICAg ICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUuQU5ZLAotLSAgICAgICAgICAg ICAgICBtX2tleWJpbmRpbmdzKTsKLSAgICAgfQotIAotIAotQEAgLTc3LDEzICs2Niw2IEBAIGNs YXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3NzX3Byb3ZpZGVyKTsKLSAgICAg ICAgIH0pOwotIAotLSAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJob3RrZXkiXS5j b25uZWN0KChrZXkpID0+IHsKLS0gICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRf c3dpdGNoX3Nob3J0Y3V0KAotLSAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24u S2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJTkcsCi0tICAgICAgICAgICAgICAgICAgICAgICAg bV9rZXliaW5kaW5ncyk7Ci0tICAgICAgICAgICAgICAgIGJpbmRfZW1vamlfc2hvcnRjdXQoKTsK LS0gICAgICAgIH0pOwotLQotICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJmb250 Il0uY29ubmVjdCgoa2V5KSA9PiB7Ci0gICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0 X2N1c3RvbV9mb250KG1fc2V0dGluZ3NfcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamksCi1AQCAtMTI0LDI1ICsxMDYs NiBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgIH0KLSAK LSAKLS0gICAgcHJpdmF0ZSB2b2lkIGJpbmRfZW1vamlfc2hvcnRjdXQoKSB7Ci0tI2lmIEVNT0pJ X0RJQ1QKLS0gICAgICAgIHN0cmluZ1tdIGFjY2VsZXJhdG9ycyA9IG1fc2V0dGluZ3NfZW1vamku Z2V0X3N0cnYoImhvdGtleSIpOwotLQotLSAgICAgICAgdmFyIGtleWJpbmRpbmdfbWFuYWdlciA9 IEtleWJpbmRpbmdNYW5hZ2VyLmdldF9pbnN0YW5jZSgpOwotLQotLSAgICAgICAgZm9yZWFjaCAo dmFyIGFjY2VsZXJhdG9yIGluIGFjY2VsZXJhdG9ycykgewotLSAgICAgICAgICAgIEJpbmRpbmdD b21tb24ua2V5YmluZGluZ19tYW5hZ2VyX2JpbmQoCi0tICAgICAgICAgICAgICAgICAgICBrZXli aW5kaW5nX21hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICByZWYgbV9rZXliaW5kaW5ncywK LS0gICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yLAotLSAgICAgICAgICAgICAgICAgICAg QmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLkVNT0pJX1RZUElORywKLS0gICAgICAgICAg ICAgICAgICAgIGhhbmRsZV9lbW9qaV90eXBpbmcsCi0tICAgICAgICAgICAgICAgICAgICBudWxs KTsKLS0gICAgICAgIH0KLS0jZW5kaWYKLS0gICAgfQotLQotLQotICAgICBwcml2YXRlIHZvaWQg c2V0X2Vtb2ppX2Zhdm9yaXRlcygpIHsKLSAgICAgICAgIG1fZW1vamllcl9mYXZvcml0ZXMgPSBt X3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJmYXZvcml0ZXMiKTsKLSAgICAgICAgIElCdXNFbW9q aWVyLnNldF9mYXZvcml0ZXMoCi1AQCAtMTk1LDkgKzE1OCw2IEBAIGNsYXNzIFBhbmVsQmluZGlu ZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAKLSAgICAgICAgIHNldF9sb2FkX2Vtb2ppX2F0X3N0 YXJ0dXAoKTsKLSAgICAgICAgIHNldF9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cCgpOwotLSAgICAg ICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KEJpbmRpbmdDb21tb24uS2V5 RXZlbnRGdW5jVHlwZS5BTlksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbV9rZXliaW5kaW5ncyk7Ci0tICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7 Ci0gICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVs LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9q aSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZiBtX2Nzc19wcm92 aWRlcik7Ci1AQCAtMzU0LDE5ICszMTQsMjYgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5Q YW5lbFNlcnZpY2UgewotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAg IEdkay5FdmVudCBldmVudCA9IG5ldyBHZGsuRXZlbnQoZXZlbnRfdHlwZSk7Ci0tICAgICAgICBl dmVudC5rZXkudGltZSA9IHhldmVudC5nZXRfdGltZSgpOwotLSAgICAgICAgR2RrLkRpc3BsYXk/ IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgdWludDMyIHRp bWUgPSB4ZXZlbnQuZ2V0X3RpbWUoKTsKLSsgICAgICAgIGlmICh0aW1lID09IDApCi0rICAgICAg ICAgICAgdGltZSA9IEd0ay5nZXRfY3VycmVudF9ldmVudF90aW1lKCk7Ci0rICAgICAgICBldmVu dC5rZXkudGltZSA9IHRpbWU7Ci0gICAgICAgICBYLldpbmRvdyB4aWQgPSB4ZXZlbnQuZ2V0X3dp bmRvdygpOwotLSAgICAgICAgR2RrLlgxMS5XaW5kb3cgd2luZG93OwotLSAgICAgICAgd2luZG93 ID0gR2RrLlgxMS5XaW5kb3cubG9va3VwX2Zvcl9kaXNwbGF5KAotLSAgICAgICAgICAgICAgICBk aXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwgeGlkKTsKLS0gICAgICAgIGlmICh3aW5kb3cgIT0g bnVsbCkgewotLSAgICAgICAgICAgIGV2ZW50LmtleS53aW5kb3cgPSB3aW5kb3c7Ci0tICAgICAg ICB9IGVsc2UgewotKyAgICAgICAgR2RrLkRpc3BsYXk/IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5n ZXRfZGVmYXVsdCgpOwotKyAgICAgICAgR2RrLldpbmRvdz8gd2luZG93ID0gbnVsbDsKLSsgICAg ICAgIGlmICh3aW5kb3cgPT0gbnVsbCAmJiB4aWQgIT0gMCkgewotKyAgICAgICAgICAgIHdpbmRv dyA9IEdkay5YMTEuV2luZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKLSsgICAgICAgICAgICAgICAg ICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LCB4aWQpOwotKyAgICAgICAgfQotKyAgICAg ICAgaWYgKHdpbmRvdyA9PSBudWxsICYmIHhpZCAhPSAwKSB7Ci0gICAgICAgICAgICAgd2luZG93 ID0gbmV3IEdkay5YMTEuV2luZG93LmZvcmVpZ25fZm9yX2Rpc3BsYXkoCi0gICAgICAgICAgICAg ICAgICAgICBkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwgeGlkKTsKLS0gICAgICAgICAgICBl dmVudC5rZXkud2luZG93ID0gd2luZG93OwotICAgICAgICAgfQotKyAgICAgICAgaWYgKHdpbmRv dyA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgd2luZG93ID0gR2RrLmdldF9kZWZhdWx0X3Jvb3Rf d2luZG93KCk7Ci0rICAgICAgICAgICAgd2luZG93LnJlZigpOwotKyAgICAgICAgfQotKyAgICAg ICAgZXZlbnQua2V5LndpbmRvdyA9IHdpbmRvdzsKLSAgICAgICAgIGhhbmRsZV9lbW9qaV90eXBp bmcoZXZlbnQpOwotICAgICB9Ci0gfQotLS0gCi0yLjE0LjMKLQo=