This is a multi-part message in MIME format. --Multipart_Thu__12_Sep_2002_19:02:54_+0200_08688910 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi, The first patch fixes a bug I have previously introduced in cvspart (cvs diff options). Shame on me... I also worked a bit for distpart (coded some basic features, nothing really impressive but it is a start :-), this is the content of the second patch. Best regards. Yann --Multipart_Thu__12_Sep_2002_19:02:54_+0200_08688910 Content-Type: application/octet-stream; name="diff_patch" Content-Disposition: attachment; filename="diff_patch" Content-Transfer-Encoding: base64 SW5kZXg6IGN2c3BhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGV2ZWxv cC9wYXJ0cy9jdnMvY3ZzcGFydC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQKZGlmZiAt dSAtcjEuMTQgY3ZzcGFydC5jcHAKLS0tIGN2c3BhcnQuY3BwCTUgU2VwIDIwMDIgMTc6MTM6MjAg LTAwMDAJMS4xNAorKysgY3ZzcGFydC5jcHAJMTIgU2VwIDIwMDIgMTY6MjE6MzYgLTAwMDAKQEAg LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJrZGV2Y29yZS5oIgogI2luY2x1ZGUgImtkZXZtYWtl ZnJvbnRlbmQuaCIKICNpbmNsdWRlICJrZGV2ZGlmZmZyb250ZW5kLmgiCisjaW5jbHVkZSAia2Rl dmFwcGZyb250ZW5kLmgiCiAjaW5jbHVkZSAiY29tbWl0ZGxnLmgiCiAjaW5jbHVkZSAibG9nZm9y bS5oIgogI2luY2x1ZGUgImV4ZWNjb21tYW5kLmgiCkBAIC0zNCwxOSArMzUsMTkgQEAKIEtfRVhQ T1JUX0NPTVBPTkVOVF9GQUNUT1JZKCBsaWJrZGV2Y3ZzLCBDdnNGYWN0b3J5KCAia2RldmN2cyIg KSApOwogCiBDdnNQYXJ0OjpDdnNQYXJ0KCBRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IFFTdHJpbmdMaXN0ICYgKSA6IEtEZXZQbHVnaW4oIHBhcmVudCwgbmFtZSApLAot CWRlZmF1bHRfY3ZzKCIiKSxkZWZhdWx0X2NvbW1pdCgiIiksZGVmYXVsdF91cGRhdGUoIi1kUCIp LGRlZmF1bHRfYWRkKCIiKSwKLQlkZWZhdWx0X3JlbW92ZSgiLWYiKSxkZWZhdWx0X2RpZmYoIiIp LGRlZmF1bHRfbG9nKCIiKSAKLXsKKyAgICAgICAgZGVmYXVsdF9jdnMoIi1mIiksZGVmYXVsdF9j b21taXQoIiIpLGRlZmF1bHRfdXBkYXRlKCItZFAiKSxkZWZhdWx0X2FkZCgiIiksCitkZWZhdWx0 X3JlbW92ZSgiLWYiKSxkZWZhdWx0X2RpZmYoIi11MyAtcCIpLGRlZmF1bHRfbG9nKCIiKSB7CiAg ICAgc2V0SW5zdGFuY2UoQ3ZzRmFjdG9yeTo6aW5zdGFuY2UoKSk7CiAgICAgY29ubmVjdCggY29y ZSgpLCBTSUdOQUwoY29udGV4dE1lbnUoUVBvcHVwTWVudSAqLCBjb25zdCBDb250ZXh0ICopKSwK LQkgICAgIHRoaXMsIFNMT1QoY29udGV4dE1lbnUoUVBvcHVwTWVudSAqLCBjb25zdCBDb250ZXh0 ICopKSApOworICAgICAgICAgICAgIHRoaXMsIFNMT1QoY29udGV4dE1lbnUoUVBvcHVwTWVudSAq LCBjb25zdCBDb250ZXh0ICopKSApOwogICAgIGNvbm5lY3QoIGNvcmUoKSwgU0lHTkFMKHByb2pl Y3RDb25maWdXaWRnZXQoS0RpYWxvZ0Jhc2UqKSksCi0JICAgICB0aGlzLCBTTE9UKHByb2plY3RD b25maWdXaWRnZXQoS0RpYWxvZ0Jhc2UqKSkgKTsKKyAgICAgICAgICAgICB0aGlzLCBTTE9UKHBy b2plY3RDb25maWdXaWRnZXQoS0RpYWxvZ0Jhc2UqKSkgKTsKIAogfQogCiBDdnNQYXJ0Ojp+Q3Zz UGFydCgpIHt9CiAKKwogdm9pZCBDdnNQYXJ0Ojpjb250ZXh0TWVudShRUG9wdXBNZW51ICpwb3B1 cCwgY29uc3QgQ29udGV4dCAqY29udGV4dCkgewogICAgIGlmIChjb250ZXh0LT5oYXNUeXBlKCJm aWxlIikpIHsKIAljb25zdCBGaWxlQ29udGV4dCAqZmNvbnRleHQgPSBzdGF0aWNfY2FzdDxjb25z dCBGaWxlQ29udGV4dCo+KGNvbnRleHQpOwpAQCAtNzQsMjkgKzc1LDI5IEBACiAJcG9wdXAtPmlu c2VydEl0ZW0oaTE4bigiQ1ZTIiksIHN1Yik7CiAgICAgfQogfQotCQotCQorCisKIHZvaWQgQ3Zz UGFydDo6c2xvdENvbW1pdCgpIHsKICAgICBRU3RyaW5nIGRpciwgbmFtZTsKICAgICBRRmlsZUlu Zm8gZmkocG9wdXBmaWxlKTsKICAgICBpZiAoZmkuaXNEaXIoKSkgewotCWRpciA9IGZpLmFic0Zp bGVQYXRoKCk7Ci0JbmFtZSA9ICIuIjsKKyAgICAgICAgZGlyID0gZmkuYWJzRmlsZVBhdGgoKTsK KyAgICAgICAgbmFtZSA9ICIuIjsKICAgICB9IGVsc2UgewotCWRpciA9IGZpLmRpclBhdGgoKTsK LQluYW1lID0gZmkuZmlsZU5hbWUoKTsKKyAgICAgICAgZGlyID0gZmkuZGlyUGF0aCgpOworICAg ICAgICBuYW1lID0gZmkuZmlsZU5hbWUoKTsKICAgICB9Ci0JCQorCiAgICAgQ29tbWl0RGlhbG9n IGQ7CiAgICAgaWYgKGQuZXhlYygpID09IFFEaWFsb2c6OlJlamVjdGVkKQotCXJldHVybjsKLQkJ CQorICAgICAgICByZXR1cm47CisKICAgICBRU3RyaW5nIG1lc3NhZ2UgPSBkLmxvZ01lc3NhZ2Uo KTsKICAgICBpZiAoIW1lc3NhZ2UuaXNFbXB0eSgpKQotCW1lc3NhZ2UgPSAiIC1tICIgKyBLU2hl bGxQcm9jZXNzOjpxdW90ZShtZXNzYWdlKTsKLQkJCisgICAgICAgIG1lc3NhZ2UgPSAiIC1tICIg KyBLU2hlbGxQcm9jZXNzOjpxdW90ZShtZXNzYWdlKTsKKwogICAgIFFEb21Eb2N1bWVudCAmZG9t ID0gKnRoaXMtPnByb2plY3REb20oKTsKLQkJCQorCiAgICAgUVN0cmluZyBjb21tYW5kKCJjZCAi KTsKICAgICBjb21tYW5kICs9IGRpcjsKICAgICBjb21tYW5kICs9ICIgJiYgY3ZzICI7CkBAIC0x MDcsMjQgKzEwOCwyNCBAQAogICAgIGNvbW1hbmQgKz0gbWVzc2FnZTsKICAgICBjb21tYW5kICs9 ICIgIjsKICAgICBjb21tYW5kICs9IG5hbWU7Ci0JCisKICAgICBtYWtlRnJvbnRlbmQoKS0+cXVl dWVDb21tYW5kKGRpciwgY29tbWFuZCk7CiB9Ci0JCi0JCisKKwogdm9pZCBDdnNQYXJ0OjpzbG90 VXBkYXRlKCkgewogICAgIFFTdHJpbmcgZGlyLCBuYW1lOwogICAgIFFGaWxlSW5mbyBmaShwb3B1 cGZpbGUpOwogICAgIGlmIChmaS5pc0RpcigpKSB7Ci0JZGlyID0gZmkuYWJzRmlsZVBhdGgoKTsK LQluYW1lID0gIi4iOworICAgICAgICBkaXIgPSBmaS5hYnNGaWxlUGF0aCgpOworICAgICAgICBu YW1lID0gIi4iOwogICAgIH0gZWxzZSB7Ci0JZGlyID0gZmkuZGlyUGF0aCgpOwotCW5hbWUgPSBm aS5maWxlTmFtZSgpOworICAgICAgICBkaXIgPSBmaS5kaXJQYXRoKCk7CisgICAgICAgIG5hbWUg PSBmaS5maWxlTmFtZSgpOwogICAgIH0KIAogICAgIFFEb21Eb2N1bWVudCAmZG9tID0gKnRoaXMt PnByb2plY3REb20oKTsKLSAgICAKKwogICAgIFFTdHJpbmcgY29tbWFuZCgiY2QgIik7CiAgICAg Y29tbWFuZCArPSBkaXI7CiAgICAgY29tbWFuZCArPSAiICYmIGN2cyAiOwpAQCAtMTMzLDE4ICsx MzQsMTggQEAKICAgICBjb21tYW5kICs9IERvbVV0aWw6OnJlYWRFbnRyeShkb20sIi9rZGV2Y3Zz L3VwZGF0ZW9wdGlvbnMiLGRlZmF1bHRfdXBkYXRlKTsKICAgICBjb21tYW5kICs9ICIgIjsKICAg ICBjb21tYW5kICs9IG5hbWU7Ci0JCisKICAgICBtYWtlRnJvbnRlbmQoKS0+cXVldWVDb21tYW5k KGRpciwgY29tbWFuZCk7CiB9Ci0JCi0JCisKKwogdm9pZCBDdnNQYXJ0OjpzbG90QWRkKCkgewog ICAgIFFGaWxlSW5mbyBmaShwb3B1cGZpbGUpOwogICAgIFFTdHJpbmcgZGlyID0gZmkuZGlyUGF0 aCgpOwogICAgIFFTdHJpbmcgbmFtZSA9IGZpLmZpbGVOYW1lKCk7CiAKLQkgICAgUURvbURvY3Vt ZW50ICZkb20gPSAqdGhpcy0+cHJvamVjdERvbSgpOwotCSAgICAKKyAgICBRRG9tRG9jdW1lbnQg JmRvbSA9ICp0aGlzLT5wcm9qZWN0RG9tKCk7CisKICAgICBRU3RyaW5nIGNvbW1hbmQoImNkICIp OwogICAgIGNvbW1hbmQgKz0gZGlyOwogICAgIGNvbW1hbmQgKz0gIiAmJiBjdnMgIjsKQEAgLTE1 MywxOCArMTU0LDE4IEBACiAgICAgY29tbWFuZCArPSBEb21VdGlsOjpyZWFkRW50cnkoZG9tLCIv a2RldmN2cy9hZGRvcHRpb25zIixkZWZhdWx0X2FkZCk7CiAgICAgY29tbWFuZCArPSAiICI7CiAg ICAgY29tbWFuZCArPSBuYW1lOwotCQkKKwogICAgIG1ha2VGcm9udGVuZCgpLT5xdWV1ZUNvbW1h bmQoZGlyLCBjb21tYW5kKTsKIH0KLQkKLQkKKworCiB2b2lkIEN2c1BhcnQ6OnNsb3RSZW1vdmUo KSB7CiAgICAgUUZpbGVJbmZvIGZpKHBvcHVwZmlsZSk7CiAgICAgUVN0cmluZyBkaXIgPSBmaS5k aXJQYXRoKCk7CiAgICAgUVN0cmluZyBuYW1lID0gZmkuZmlsZU5hbWUoKTsKIAotCSAgUURvbURv Y3VtZW50ICZkb20gPSAqdGhpcy0+cHJvamVjdERvbSgpOwotCSAgICAKKyAgICBRRG9tRG9jdW1l bnQgJmRvbSA9ICp0aGlzLT5wcm9qZWN0RG9tKCk7CisKICAgICBRU3RyaW5nIGNvbW1hbmQoImNk ICIpOwogICAgIGNvbW1hbmQgKz0gZGlyOwogICAgIGNvbW1hbmQgKz0gIiAmJiBjdnMgIjsKQEAg LTE3Myw2OSArMTc0LDc1IEBACiAgICAgY29tbWFuZCArPSBEb21VdGlsOjpyZWFkRW50cnkoZG9t LCIva2RldmN2cy9yZW1vdmVvcHRpb25zIixkZWZhdWx0X3JlbW92ZSk7CiAgICAgY29tbWFuZCAr PSAiICI7CiAgICAgY29tbWFuZCArPSBuYW1lOwotCQorCiAgICAgbWFrZUZyb250ZW5kKCktPnF1 ZXVlQ29tbWFuZChkaXIsIGNvbW1hbmQpOwogfQotCQorCiB2b2lkIEN2c1BhcnQ6OnNsb3RMb2co KSB7CiAgICAgTG9nRm9ybSogZiA9IG5ldyBMb2dGb3JtKCk7CiAgICAgZi0+c2hvdygpOwogICAg IGYtPnN0YXJ0KCBwb3B1cGZpbGUgKTsKIH0KLQkKKwogdm9pZCBDdnNQYXJ0OjpzbG90RGlmZigp IHsKICAgICBRRmlsZUluZm8gZmkocG9wdXBmaWxlKTsKICAgICBRU3RyaW5nIGRpciA9IGZpLmRp clBhdGgoKTsKICAgICBRU3RyaW5nIG5hbWUgPSBmaS5maWxlTmFtZSgpOwogICAgIFFTdHJpbmdM aXN0IGFyZ3M7CisgICAgUVN0cmluZyBzdHI7CiAKICAgICBRRG9tRG9jdW1lbnQgJmRvbSA9ICp0 aGlzLT5wcm9qZWN0RG9tKCk7Ci0gICAgUVN0cmluZyBjdnNPcHRzID0gRG9tVXRpbDo6cmVhZEVu dHJ5KGRvbSwiL2tkZXZjdnMvY3Zzb3B0aW9ucyIsZGVmYXVsdF9jdnMpOwotICAgIFFTdHJpbmcg ZGlmZk9wdHMgPSBEb21VdGlsOjpyZWFkRW50cnkoZG9tLCIva2RldmN2cy9kaWZmb3B0aW9ucyIs ZGVmYXVsdF9kaWZmKTsKKworICAgIHN0ciA9IERvbVV0aWw6OnJlYWRFbnRyeShkb20sIi9rZGV2 Y3ZzL2N2c29wdGlvbnMiLGRlZmF1bHRfY3ZzKTsKICAgICAKLSAgICBpZiAoICFjdnNPcHRzLmlz RW1wdHkoKSApCi0gICAgICBhcmdzIDw8IGN2c09wdHM7IAotICAgIGFyZ3MgPDwgImRpZmYiOwot ICAgIGlmICggIWRpZmZPcHRzLmlzRW1wdHkoKSApCi0gICAgICBhcmdzIDw8IGRpZmZPcHRzOwor ICAgIGlmIChzdHIubGVuZ3RoKCkpIHsKKwlRU3RyaW5nTGlzdCBsaXN0ID0gUVN0cmluZ0xpc3Q6 OnNwbGl0KCcgJyxzdHIpOworCWZvcihRU3RyaW5nTGlzdDo6SXRlcmF0b3IgaXQgPSBsaXN0LmJl Z2luKCk7IGl0ICE9IGxpc3QuZW5kKCk7ICsraXQpIGFyZ3MgPDwgKml0OyAKKyAgICB9CisgICAg YXJncyA8PCAiZGlmZiI7IC8vIGNhbm5vdCB1c2UgIi11MyAtcCIgc2luY2UgaXQgd2lsbCBjbGFz aCB3aXRoIH4vLmN2c3JjCisgICAgc3RyID0gRG9tVXRpbDo6cmVhZEVudHJ5KGRvbSwiL2tkZXZj dnMvZGlmZm9wdGlvbnMiLGRlZmF1bHRfZGlmZik7CisgICAgaWYgKHN0ci5sZW5ndGgoKSkgewor CVFTdHJpbmdMaXN0IGxpc3QgPSBRU3RyaW5nTGlzdDo6c3BsaXQoJyAnLHN0cik7CisJZm9yKFFT dHJpbmdMaXN0OjpJdGVyYXRvciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gbGlzdC5lbmQoKTsg KytpdCkgYXJncyA8PCAqaXQ7IAorICAgIH0KICAgICBhcmdzIDw8IG5hbWU7Ci0KKyAgICAKICAg ICBFeGVjQ29tbWFuZCogY212ID0gbmV3IEV4ZWNDb21tYW5kKCAiY3ZzIiwgYXJncywgZGlyLCB0 aGlzICk7CiAgICAgY29ubmVjdCggY212LCBTSUdOQUwoZmluaXNoZWQoIGNvbnN0IFFTdHJpbmcm LCBjb25zdCBRU3RyaW5nJiApKSwKLQkgICAgIHRoaXMsIFNMT1Qoc2xvdERpZmZGaW5pc2hlZCgg Y29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmICkpICk7CisgICAgICAgICAgICAgdGhpcywg U0xPVChzbG90RGlmZkZpbmlzaGVkKCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYgKSkg KTsKIH0KLQkKKwogdm9pZCBDdnNQYXJ0OjpzbG90RGlmZkZpbmlzaGVkKCBjb25zdCBRU3RyaW5n JiBkaWZmLCBjb25zdCBRU3RyaW5nJiBlcnIgKSB7CiAgICAgaWYgKCBkaWZmID09IFFTdHJpbmc6 Om51bGwgJiYgZXJyID09IFFTdHJpbmc6Om51bGwgKSB7Ci0Ja2REZWJ1Zyg5MDAwKSA8PCAiY3Zz IGRpZmYgY2FuY2VsbGVkIiA8PCBlbmRsOwotCXJldHVybjsgLy8gdXNlciBwcmVzc2VkIGNhbmNl bCBvciBhbiBlcnJvciBvY2N1cmVkCisgICAgICAgIGtkRGVidWcoOTAwMCkgPDwgImN2cyBkaWZm IGNhbmNlbGxlZCIgPDwgZW5kbDsKKyAgICAgICAgcmV0dXJuOyAvLyB1c2VyIHByZXNzZWQgY2Fu Y2VsIG9yIGFuIGVycm9yIG9jY3VyZWQKICAgICB9CiAKICAgICBpZiAoIGRpZmYuaXNFbXB0eSgp ICYmICFlcnIuaXNFbXB0eSgpICkgewotCUtNZXNzYWdlQm94OjpkZXRhaWxlZEVycm9yKCAwLCBp MThuKCJDVlMgb3V0cHV0dGVkIGVycm9ycyBkdXJpbmcgZGlmZi4iKSwgZXJyLCBpMThuKCJFcnJv cnMgRHVyaW5nIERpZmYiKSApOwotCXJldHVybjsKKyAgICAgICAgS01lc3NhZ2VCb3g6OmRldGFp bGVkRXJyb3IoIDAsIGkxOG4oIkNWUyBvdXRwdXR0ZWQgZXJyb3JzIGR1cmluZyBkaWZmLiIpLCBl cnIsIGkxOG4oIkVycm9ycyBEdXJpbmcgRGlmZiIpICk7CisgICAgICAgIHJldHVybjsKICAgICB9 Ci0JCisKICAgICBpZiAoICFlcnIuaXNFbXB0eSgpICkgewotCWludCBzID0gS01lc3NhZ2VCb3g6 Ondhcm5pbmdDb250aW51ZUNhbmNlbExpc3QoIDAsIGkxOG4oIkNWUyBvdXRwdXR0ZWQgZXJyb3Jz IGR1cmluZyBkaWZmLiBEbyB5b3Ugc3RpbGwgd2FudCB0byBjb250aW51ZT8iKSwKLQkJCQkJCQlR U3RyaW5nTGlzdDo6c3BsaXQoICJcbiIsIGVyciwgZmFsc2UgKSwgaTE4bigiRXJyb3JzIER1cmlu ZyBEaWZmIikgKTsKLQlpZiAoIHMgIT0gS01lc3NhZ2VCb3g6OkNvbnRpbnVlICkKLQkgICAgcmV0 dXJuOworICAgICAgICBpbnQgcyA9IEtNZXNzYWdlQm94Ojp3YXJuaW5nQ29udGludWVDYW5jZWxM aXN0KCAwLCBpMThuKCJDVlMgb3V0cHV0dGVkIGVycm9ycyBkdXJpbmcgZGlmZi4gRG8geW91IHN0 aWxsIHdhbnQgdG8gY29udGludWU/IiksCisgICAgICAgICAgICAgICAgUVN0cmluZ0xpc3Q6OnNw bGl0KCAiXG4iLCBlcnIsIGZhbHNlICksIGkxOG4oIkVycm9ycyBkdXJpbmcgRGlmZiIpICk7Cisg ICAgICAgIGlmICggcyAhPSBLTWVzc2FnZUJveDo6Q29udGludWUgKQorICAgICAgICAgICAgcmV0 dXJuOwogICAgIH0KLQkJCQorCiAgICAgaWYgKCBkaWZmLmlzRW1wdHkoKSApIHsKLQlLTWVzc2Fn ZUJveDo6aW5mb3JtYXRpb24oIDAsIGkxOG4oIlRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgdG8gdGhl IHJlcG9zaXRvcnkiKSwgaTE4bigiTm8gRGlmZmVyZW5jZXMgRm91bmQiKSApOwotCXJldHVybjsK KyAgICAgICAgS01lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKCAwLCBpMThuKCJUaGVyZSBpcyBubyBk aWZmZXJlbmNlIHRvIHRoZSByZXBvc2l0b3J5IiksIGkxOG4oIk5vIERpZmZlcmVuY2UgZm91bmQi KSApOworICAgICAgICByZXR1cm47CiAgICAgfQotCQkKKwogICAgIFFfQVNTRVJUKCBkaWZmRnJv bnRlbmQoKSApOwogICAgIGRpZmZGcm9udGVuZCgpLT5zaG93RGlmZiggZGlmZiApOwogfQotCQkK Kwogdm9pZCBDdnNQYXJ0Ojpwcm9qZWN0Q29uZmlnV2lkZ2V0KEtEaWFsb2dCYXNlICpkbGcpIHsK ICAgICBRVkJveCAqdmJveCA9IGRsZy0+YWRkVkJveFBhZ2UoaTE4bigiQ1ZTIikpOwogICAgIEN2 c09wdGlvbnNXaWRnZXQgKncgPSBuZXcgQ3ZzT3B0aW9uc1dpZGdldCh0aGlzLCAoUVdpZGdldCAq KXZib3gsICJjdnMgY29uZmlnIHdpZGdldCIpOwogICAgIGNvbm5lY3QoIGRsZywgU0lHTkFMKG9r Q2xpY2tlZCgpKSwgdywgU0xPVChhY2NlcHQoKSkgKTsKIH0KLQkKKwogI2luY2x1ZGUgImN2c3Bh cnQubW9jIgo= --Multipart_Thu__12_Sep_2002_19:02:54_+0200_08688910 Content-Type: application/octet-stream; name="dist_patch" Content-Disposition: attachment; filename="dist_patch" Content-Transfer-Encoding: base64 Y3ZzYW5vbiBzZXJ2ZXI6IERpZmZpbmcgLgpJbmRleDogZGlzdHBhcnRfcGFydC5jcHAKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZXZlbG9wL3BhcnRzL2Rpc3RwYXJ0L2Rpc3RwYXJ0 X3BhcnQuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXUgLXIxLjEwIGRpc3Rw YXJ0X3BhcnQuY3BwCi0tLSBkaXN0cGFydF9wYXJ0LmNwcAkyMSBKdWwgMjAwMiAwOTozNTozNSAt MDAwMAkxLjEwCisrKyBkaXN0cGFydF9wYXJ0LmNwcAkxMiBTZXAgMjAwMiAxNjozOToyOSAtMDAw MApAQCAtMTUsNDMgKzE1LDQzIEBACiBLX0VYUE9SVF9DT01QT05FTlRfRkFDVE9SWSggbGlia2Rl dmRpc3RwYXJ0LCBEaXN0cGFydEZhY3RvcnkoICJrZGV2ZGlzdHBhcnQiICkgKTsKIAogRGlzdHBh cnRQYXJ0OjpEaXN0cGFydFBhcnQoUU9iamVjdCAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBRU3RyaW5nTGlzdCAmKQotICA6IEtEZXZQbHVnaW4ocGFyZW50LCBuYW1lKQotewotICBz ZXRJbnN0YW5jZShEaXN0cGFydEZhY3Rvcnk6Omluc3RhbmNlKCkpOwotIAotICBzZXRYTUxGaWxl KCJrZGV2cGFydF9kaXN0cGFydC5yYyIpOwotCi0gIG1fYWN0aW9uID0gIG5ldyBLQWN0aW9uKCBp MThuKCJQcm9qZWN0IERpc3RyaWJ1dGlvbiBhbmQgUHVibGlzaGluZyIpLCAicGFja2FnZSIsIDAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIFNMT1Qoc2hvdygpKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAibWFrZV9kaXN0IiApOwotCi0g IG1fYWN0aW9uLT5zZXRTdGF0dXNUZXh0KGkxOG4oIk1ha2UgU291cmNlIGFuZCBCaW5hcnkgRGlz dHJpYnV0aW9uIikpOwotICBtX2FjdGlvbi0+c2V0V2hhdHNUaGlzKGkxOG4oIkRpc3RyaWJ1dGlv biBhbmQgUHVibGlzaGluZzpcblxuIgotICAgICAgICAgICAgICAgICAJICAgICJmbm9yayBmbm9y ayBibHViLi4uLiBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9yayBib3JrIGJv cmsuLi4uLiIpKTsKLSAgLy9RV2hhdHNUaGlzOjphZGQobV93aWRnZXQsIGkxOG4oIlRoaXMgd2ls bCBoZWxwIHVzZXJzIHBhY2thZ2UgYW5kIHB1Ymxpc2ggdGhlaXIgc29mdHdhcmUuIikpOwotCi0g IG1fZGlhbG9nID0gMDsKLQotICAvLyBzZXQgdXAgcGFja2FnZQotICBLVVJMIHByb2plY3RVUkw7 ICAvLyB3ZSBuZWVkIHRvIGdldCB0aGlzIGZyb20gdGhlIGJhc2UgcHJvamVjdAotICB0aGVQYWNr YWdlID0gbmV3IHBhY2thZ2VCYXNlKCk7Ci0gIHRoZVBhY2thZ2UtPmxvYWRGaWxlKHByb2plY3RV UkwpOworICAgICAgICA6IEtEZXZQbHVnaW4ocGFyZW50LCBuYW1lKSB7CisgICAgc2V0SW5zdGFu Y2UoRGlzdHBhcnRGYWN0b3J5OjppbnN0YW5jZSgpKTsKKworICAgIHNldFhNTEZpbGUoImtkZXZw YXJ0X2Rpc3RwYXJ0LnJjIik7CisKKyAgICBtX2FjdGlvbiA9ICBuZXcgS0FjdGlvbiggaTE4bigi UHJvamVjdCBEaXN0cmlidXRpb24gYW5kIFB1Ymxpc2hpbmciKSwgInBhY2thZ2UiLCAwLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKHNob3coKSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbGxlY3Rpb24oKSwgIm1ha2VfZGlzdCIgKTsKKwor ICAgIG1fYWN0aW9uLT5zZXRTdGF0dXNUZXh0KGkxOG4oIk1ha2UgU291cmNlIGFuZCBCaW5hcnkg RGlzdHJpYnV0aW9uIikpOworICAgIG1fYWN0aW9uLT5zZXRXaGF0c1RoaXMoaTE4bigiRGlzdHJp YnV0aW9uIGFuZCBQdWJsaXNoaW5nOlxuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJmbm9yayBmbm9yayBibHViLi4uLiBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImJvcmsgYm9yayBib3JrLi4uLi4iKSk7CisgICAgLy9RV2hhdHNUaGlzOjphZGQobV93 aWRnZXQsIGkxOG4oIlRoaXMgd2lsbCBoZWxwIHVzZXJzIHBhY2thZ2UgYW5kIHB1Ymxpc2ggdGhl aXIgc29mdHdhcmUuIikpOworCisgICAgbV9kaWFsb2cgPSAwOworCisgICAgLy8gc2V0IHVwIHBh Y2thZ2UKKyAgICAvL0tVUkwgcHJvamVjdFVSTDsgIC8vIHdlIG5lZWQgdG8gZ2V0IHRoaXMgZnJv bSB0aGUgYmFzZSBwcm9qZWN0CisgICAgLy90aGVQYWNrYWdlID0gbmV3IHBhY2thZ2VCYXNlKCk7 CisgICAgLy90aGVQYWNrYWdlLT5sb2FkRmlsZShwcm9qZWN0VVJMKTsKIH0KIAogCi1EaXN0cGFy dFBhcnQ6On5EaXN0cGFydFBhcnQoKQotewotICBkZWxldGUgbV9kaWFsb2c7CitEaXN0cGFydFBh cnQ6On5EaXN0cGFydFBhcnQoKSB7CisgICAgZGVsZXRlIG1fZGlhbG9nOwogfQogCiAKLXZvaWQg RGlzdHBhcnRQYXJ0OjpzaG93KCkKLXsKLSAgaWYgKCFtX2RpYWxvZykKLSAgICBtX2RpYWxvZyA9 IG5ldyBEaXN0cGFydERpYWxvZyh0aGlzKTsKK3ZvaWQgRGlzdHBhcnRQYXJ0OjpzaG93KCkgewor ICAgIGlmICghbV9kaWFsb2cpCisgICAgICAgIG1fZGlhbG9nID0gbmV3IERpc3RwYXJ0RGlhbG9n KHRoaXMpOwogCi0gIG1fZGlhbG9nLT5zaG93KCk7CisgICAgbV9kaWFsb2ctPnNob3coKTsKIH0K IAordm9pZCBEaXN0cGFydFBhcnQ6OmhpZGUoKSB7CisgICAgbV9kaWFsb2ctPmhpZGUoKTsKK30K ICNpbmNsdWRlICJkaXN0cGFydF9wYXJ0Lm1vYyIKSW5kZXg6IGRpc3RwYXJ0X3BhcnQuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva2RldmVsb3AvcGFydHMvZGlzdHBhcnQvZGlzdHBh cnRfcGFydC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtdSAtcjEuNSBkaXN0cGFy dF9wYXJ0LmgKLS0tIGRpc3RwYXJ0X3BhcnQuaAkxMSBBcHIgMjAwMiAwNzoyMzo0OCAtMDAwMAkx LjUKKysrIGRpc3RwYXJ0X3BhcnQuaAkxMiBTZXAgMjAwMiAxNjozOToyOSAtMDAwMApAQCAtMSw3 ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIElhbiBSZWluaGFydCBHZWlzZXIs TGludXhQUEMgSW5jLCwgPGdlaXNlcmlAZWx5c2l1bS5saW51eHBwYy5vcmc+ICAgCiAgKi8KLSAK KwogCiAjaWZuZGVmIF9fS0RFVlBBUlRfRElTVFBBUlRfSF9fCiAjZGVmaW5lIF9fS0RFVlBBUlRf RElTVFBBUlRfSF9fCkBAIC0xNiwyMiArMTYsMjIgQEAKIGNsYXNzIERpc3RwYXJ0RGlhbG9nOwog CiAKLWNsYXNzIERpc3RwYXJ0UGFydCA6IHB1YmxpYyBLRGV2UGx1Z2luCi17Ci0gIFFfT0JKRUNU CitjbGFzcyBEaXN0cGFydFBhcnQgOiBwdWJsaWMgS0RldlBsdWdpbiB7CisgICAgUV9PQkpFQ1QK IAogcHVibGljOgogCi0gIERpc3RwYXJ0UGFydChRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IFFTdHJpbmdMaXN0ICYpOwotICB+RGlzdHBhcnRQYXJ0KCk7CisgICAgRGlz dHBhcnRQYXJ0KFFPYmplY3QgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgUVN0cmlu Z0xpc3QgJik7CisgICAgfkRpc3RwYXJ0UGFydCgpOwogCiBwdWJsaWMgc2xvdHM6Ci0gIHZvaWQg c2hvdygpOworICAgIHZvaWQgc2hvdygpOworICAgIHZvaWQgaGlkZSgpOwogCiBwcml2YXRlOgot ICBwYWNrYWdlQmFzZSAqdGhlUGFja2FnZTsKLSAgUUd1YXJkZWRQdHI8RGlzdHBhcnREaWFsb2c+ IG1fZGlhbG9nOwotICBLQWN0aW9uICptX2FjdGlvbjsKKyAgICBwYWNrYWdlQmFzZSAqdGhlUGFj a2FnZTsKKyAgICBRR3VhcmRlZFB0cjxEaXN0cGFydERpYWxvZz4gbV9kaWFsb2c7CisgICAgS0Fj dGlvbiAqbV9hY3Rpb247CiB9OwogCiAKSW5kZXg6IGRpc3RwYXJ0X3VpLnVpCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9ob21lL2tkZS9rZGV2ZWxvcC9wYXJ0cy9kaXN0cGFydC9kaXN0cGFydF91aS51 aSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC11IC1yMS4xNCBkaXN0cGFydF91aS51 aQotLS0gZGlzdHBhcnRfdWkudWkJMTYgQXVnIDIwMDIgMTI6MjE6MDkgLTAwMDAJMS4xNAorKysg ZGlzdHBhcnRfdWkudWkJMTIgU2VwIDIwMDIgMTY6Mzk6MzMgLTAwMDAKQEAgLTg1OCw3ICs4NTgs NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW51bT5N aW5pbXVtPC9lbnVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv cHJvcGVydHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYWNlcj4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9IlFUb29s QnV0dG9uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3aWRnZXQgY2xh c3M9IlFQdXNoQnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ibmFtZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxjc3RyaW5nPnVwbG9hZEFkZEZpbGVUb29sQnV0dG9uPC9jc3RyaW5nPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcHJvcGVydHk+CkBAIC04 NzQsNyArODc0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHN0cmluZz4rPC9zdHJpbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv d2lkZ2V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdpZGdldCBjbGFz cz0iUVRvb2xCdXR0b24iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdp ZGdldCBjbGFzcz0iUVB1c2hCdXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGNzdHJpbmc+dXBsb2FkUmVtb3ZlVG9vbEJ1dHRvbjwvY3N0 cmluZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Byb3BlcnR5 PgpJbmRleDogZGlzdHBhcnRfd2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9r ZGUva2RldmVsb3AvcGFydHMvZGlzdHBhcnQvZGlzdHBhcnRfd2lkZ2V0LmNwcCx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLXIxLjkgZGlzdHBhcnRfd2lkZ2V0LmNwcAotLS0gZGlz dHBhcnRfd2lkZ2V0LmNwcAkyMyBBcHIgMjAwMiAxNzo1NjoxMSAtMDAwMAkxLjkKKysrIGRpc3Rw YXJ0X3dpZGdldC5jcHAJMTIgU2VwIDIwMDIgMTY6Mzk6MzMgLTAwMDAKQEAgLTQsMzU5ICs0LDUx MyBAQAogI2luY2x1ZGUgPGtsaWJsb2FkZXIuaD4KICNpbmNsdWRlIDxrdXJsLmg+CiAjaW5jbHVk ZSA8a2RlYnVnLmg+Ci0KKyNpbmNsdWRlIDxrcHJvY2Vzcy5oPgorI2luY2x1ZGUgImtkZXZwcm9q ZWN0LmgiCisjaW5jbHVkZSAiZG9tdXRpbC5oIgogCiAjaW5jbHVkZSA8a2RldmNvcmUuaD4KICNp bmNsdWRlIDxxZ3JvdXBib3guaD4KICNpbmNsdWRlIDxxbGF5b3V0Lmg+CisjaW5jbHVkZSA8cW5l dHdvcmsuaD4KKyNpbmNsdWRlIDxxdXJsb3BlcmF0b3IuaD4KICNpbmNsdWRlICJkaXN0cGFydF9w YXJ0LmgiCisjaW5jbHVkZSA8cWRpci5oPgogCi0KLURpc3RwYXJ0RGlhbG9nOjpEaXN0cGFydERp YWxvZyhEaXN0cGFydFBhcnQgKi8qcGFydCovKQotCTogZGlzdHBhcnRfdWkoMCwgImRpc3RwYXJ0 IHdpZGdldCIpCi17CitEaXN0cGFydERpYWxvZzo6RGlzdHBhcnREaWFsb2coRGlzdHBhcnRQYXJ0 ICpwYXJ0KQorICAgICAgICA6IGRpc3RwYXJ0X3VpKDAsICJkaXN0cGFydCB3aWRnZXQiKSB7Cisg ICAgbV9wYXJ0ID0gcGFydDsKKyAgICB0YXJfcHJvYyA9IG5ldyBLUHJvY2VzczsKKyAgICAKICAg ICBjb25uZWN0KGN1c3RvbVByb2plY3RDaGVja0JveCwgU0lHTkFMKHRvZ2dsZWQoYm9vbCkgKSwK LSAgICAgICAgICAgdGhpcywgU0xPVChzbG90Y3VzdG9tUHJvamVjdENoZWNrQm94Q2hhbmdlZCgp KSk7CisgICAgICAgICAgICB0aGlzLCBTTE9UKHNsb3RjdXN0b21Qcm9qZWN0Q2hlY2tCb3hDaGFu Z2VkKCkpKTsKICAgICBjb25uZWN0KHVwbG9hZEN1c3RvbUNoZWNrQm94LCBTSUdOQUwodG9nZ2xl ZChib29sKSksCi0gICAgICAgICAgIHRoaXMsIFNMT1Qoc2xvdHVwbG9hZEN1c3RvbUNoZWNrQm94 Q2hhbmdlZCgpKSk7CisgICAgICAgICAgICB0aGlzLCBTTE9UKHNsb3R1cGxvYWRDdXN0b21DaGVj a0JveENoYW5nZWQoKSkpOwogCisgICAgY29ubmVjdChva2F5UHVzaEJ1dHRvbiwgU0lHTkFMKGNs aWNrZWQoKSksCisgICAgICAgICAgICB0aGlzLCBTTE9UKHNsb3Rva2F5UHVzaEJ1dHRvblByZXNz ZWQoKSkpOworICAgIGNvbm5lY3QoY2FuY2VsUHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSks CisgICAgICAgICAgICB0aGlzLCBTTE9UKHNsb3RjYW5jZWxQdXNoQnV0dG9uUHJlc3NlZCgpKSk7 CisgICAgY29ubmVjdChoZWxwX1B1c2hCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLAorICAgICAg ICAgICAgdGhpcywgU0xPVChzbG90aGVscF9QdXNoQnV0dG9uUHJlc3NlZCgpKSk7CisgICAgY29u bmVjdChjcmVhdGVTcmNBcmNoUHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksCisJICAgIHRo aXMsIFNMT1Qoc2xvdGNyZWF0ZVNyY0FyY2hQdXNoQnV0dG9uUHJlc3NlZCgpKSk7CisgICAgY29u bmVjdChyZXNldFNyY1B1c2hCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLAorCSAgICB0aGlzLCBT TE9UKHNsb3RyZXNldFNyY1B1c2hCdXR0b25QcmVzc2VkKCkpKTsKKyAgICBjb25uZWN0KGJ1aWxk QWxsUHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksCisJICAgIHRoaXMsIFNMT1Qoc2xvdGJ1 aWxkQWxsUHVzaEJ1dHRvblByZXNzZWQoKSkpOworICAgIGNvbm5lY3QoZXhwb3J0U1BFQ1B1c2hC dXR0b24sIFNJR05BTChjbGlja2VkKCkpLAorCSAgICB0aGlzLCBTTE9UKHNsb3RleHBvcnRTUEVD UHVzaEJ1dHRvblByZXNzZWQoKSkpOworICAgIGNvbm5lY3QoaW1wb3J0U1BFQ1B1c2hCdXR0b24s IFNJR05BTChjbGlja2VkKCkpLAorCSAgICB0aGlzLCBTTE9UKHNsb3RpbXBvcnRQdXNoQnV0dG9u UHJlc3NlZCgpKSk7CisgICAgY29ubmVjdChzcmNQYWNrYWdlUHVzaEJ1dHRvbiwgU0lHTkFMKGNs aWNrZWQoKSksCisJICAgIHRoaXMsIFNMT1Qoc2xvdHNyY1BhY2thZ2VQdXNoQnV0dG9uUHJlc3Nl ZCgpKSk7CisgICAgY29ubmVjdChnZW5IVE1MUHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSks CisJICAgIHRoaXMsIFNMT1Qoc2xvdGdlbkhUTUxQdXNoQnV0dG9uUHJlc3NlZCgpKSk7CisgICAg Y29ubmVjdChyZXNldEhUTUxQdXNoQnV0dG9uLCBTSUdOQUwoY2xpY2tlZCgpKSwKKwkgICAgdGhp cywgU0xPVChzbG90cmVzZXRIVE1MUHVzaEJ1dHRvblByZXNzZWQoKSkpOworICAgIGNvbm5lY3Qo dXBsb2FkU3VibWl0UHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksCisJICAgIHRoaXMsIFNM T1Qoc2xvdHVwbG9hZFN1Ym1pdFB1c2hCdXR0b25QcmVzc2VkKCkpKTsKKyAgICBjb25uZWN0KHVw bG9hZFJlc2V0UHVzaEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksCisJICAgIHRoaXMsIFNMT1Qo c2xvdHVwbG9hZFJlc2V0UHVzaEJ1dHRvblByZXNzZWQoKSkpOworICAgIGNvbm5lY3QodXBsb2Fk QWRkRmlsZVRvb2xCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLAorCSAgICB0aGlzLCBTTE9UKHNs b3R1cGxvYWRBZGRGaWxlVG9vbEJ1dHRvblByZXNzZWQoKSkpOworICAgIGNvbm5lY3QodXBsb2Fk UmVtb3ZlVG9vbEJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksCisJICAgIHRoaXMsIFNMT1Qoc2xv dHVwbG9hZFJlbW92ZVRvb2xCdXR0b25QcmVzc2VkKCkpKTsKKyAgICAKKyAgICBsb2FkU2V0dGlu Z3MoKTsKKyAgICBxSW5pdE5ldHdvcmtQcm90b2NvbHMoKTsKIH0KIAogCi1EaXN0cGFydERpYWxv Zzo6fkRpc3RwYXJ0RGlhbG9nKCkKLXsKK0Rpc3RwYXJ0RGlhbG9nOjp+RGlzdHBhcnREaWFsb2co KSB7CisgICAgZGVsZXRlIHRhcl9wcm9jOwogfQogCiAvLyAgICBRUHVzaEJ1dHRvbiogb2theVB1 c2hCdXR0b247Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90b2theVB1c2hCdXR0b25QcmVzc2Vk KCkKLXsKLSAgIGVtaXQgb2theSgpOworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90b2theVB1 c2hCdXR0b25QcmVzc2VkKCkgeworICAgIHN0b3JlU2V0dGluZ3MoKTsKKyAgICBhY2NlcHQoKTsK IH0KIC8vICAgIFFQdXNoQnV0dG9uKiBjYW5jZWxQdXNoQnV0dG9uOwotdm9pZCBEaXN0cGFydERp YWxvZzo6c2xvdGNhbmNlbFB1c2hCdXR0b25QcmVzc2VkKCkKLXsKLSAgIGVtaXQgY2FuY2VsKCk7 CisKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3RjYW5jZWxQdXNoQnV0dG9uUHJlc3NlZCgpIHsK KyAgICByZWplY3QoKTsKIH0KIC8vICAgIFFQdXNoQnV0dG9uKiBoZWxwX1B1c2hCdXR0b247Ci12 b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90aGVscF9QdXNoQnV0dG9uUHJlc3NlZCgpCi17Ci0gICBl bWl0IGhlbHAoKTsKKwordm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdGhlbHBfUHVzaEJ1dHRvblBy ZXNzZWQoKSB7CisgICAgZW1pdCBoZWxwKCk7CiB9CiAvLyAgICBRUHVzaEJ1dHRvbiogY3JlYXRl U3JjQXJjaFB1c2hCdXR0b247Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90Y3JlYXRlU3JjQXJj aFB1c2hCdXR0b25QcmVzc2VkKCkKLXsKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3RjcmVhdGVT cmNBcmNoUHVzaEJ1dHRvblByZXNzZWQoKSB7CisgICAgaWYoIXRhcl9wcm9jLT5pc1J1bm5pbmco KSkgeworCXRhcl9wcm9jLT5jbGVhckFyZ3VtZW50cygpOworCXRhcl9wcm9jLT5zZXRXb3JraW5n RGlyZWN0b3J5KGRpcik7CisJKnRhcl9wcm9jIDw8ICJ0YXIiOworCVFTdHJpbmcgYXJncygiY2Yi KTsKKwlhcmdzICs9IChnZXRjdXN0b21Qcm9qZWN0Q2hlY2tCb3hTdGF0ZSgpICYmIGdldGJ6aXBD aGVja0JveFN0YXRlKCkpID8gImoiIDogInoiOworCSp0YXJfcHJvYyA8PCBhcmdzOworCVFTdHJp bmcgYXJjaG5hbWUobV9wYXJ0LT5wcm9qZWN0KCktPnByb2plY3ROYW1lKCkpOworCWFyY2huYW1l ICs9IChnZXRjdXN0b21Qcm9qZWN0Q2hlY2tCb3hTdGF0ZSgpICYmIGdldGJ6aXBDaGVja0JveFN0 YXRlKCkpID8gIi50YXIuYnoyIiA6ICIudGFyLmd6IjsKKwkqdGFyX3Byb2MgPDwgYXJjaG5hbWU7 CisJKnRhcl9wcm9jIDw8IGRpcjsKKwkKKwlpZighdGFyX3Byb2MtPnN0YXJ0KCkpIGtkRGVidWco KSA8PCAiRXJyb3IgcnVubmluZyB0YXIiIDw8IGVuZGw7CisgICAgfQogfQorCiAvLyAgICBRUHVz aEJ1dHRvbiogcmVzZXRTcmNQdXNoQnV0dG9uOwotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdHJl c2V0U3JjUHVzaEJ1dHRvblByZXNzZWQoKQotewotfQorCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpz bG90cmVzZXRTcmNQdXNoQnV0dG9uUHJlc3NlZCgpIHt9CiAvLyAgICBRUHVzaEJ1dHRvbiogYnVp bGRBbGxQdXNoQnV0dG9uOwotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdGJ1aWxkQWxsUHVzaEJ1 dHRvblByZXNzZWQoKQotewotfQorCisKKwordm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdGJ1aWxk QWxsUHVzaEJ1dHRvblByZXNzZWQoKSB7fQogLy8gICAgUVB1c2hCdXR0b24qIGV4cG9ydFNQRUNQ dXNoQnV0dG9uOwotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdGV4cG9ydFNQRUNQdXNoQnV0dG9u UHJlc3NlZCgpCi17CisKKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90ZXhwb3J0U1BFQ1B1 c2hCdXR0b25QcmVzc2VkKCkgeworICAgIFFTdHJpbmcgc3BlY25hbWUobV9wYXJ0LT5wcm9qZWN0 KCktPnByb2plY3REaXJlY3RvcnkoKSArICIvIiArIG1fcGFydC0+cHJvamVjdCgpLT5wcm9qZWN0 TmFtZSgpICsgIi5zcGVjIik7CisgICAgUUZpbGUgZmlsZShzcGVjbmFtZSk7CisgICAgCisgICAg aWYoZmlsZS5vcGVuKElPX1dyaXRlT25seSkpIHsKKwlRVGV4dFN0cmVhbSBzdHJlYW0oJmZpbGUp OworCQorCXN0cmVhbSA8PCAiIyBUaGlzIHNwZWMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IEdpZGVv biIgPDwgIlxuIgorCSAgICA8PCAiIyBQbGVhc2UgcmVwb3J0IGFueSBwcm9ibGVtIHRvIEtEZXZl bG9wIFRlYW0gPGtkZXZlbG9wLWRldmVsQGtkZXZlbG9wLm9yZz4iIDw8ICJcblxuIjsKKwkKKwlz dHJlYW0gPDwgIk5hbWU6ICIgPDwgZ2V0YXBwTmFtZUZvcm1hdExpbmVFZGl0VGV4dCgpIDw8ICJc biI7CisJc3RyZWFtIDw8ICJWZXJzaW9uOiAiIDw8IGdldHZlcnNpb25MaW5lRWRpdFRleHQoKSA8 PCAiXG4iOworCXN0cmVhbSA8PCAiUmVsZWFzZTogIiA8PCBnZXRyZWxlYXNlTGluZUVkaXRUZXh0 KCkgPDwgIlxuIjsKKwlzdHJlYW0gPDwgIlZlbmRvcjogIiA8PCBnZXR2ZW5kb3JMaW5lRWRpdFRl eHQoKSA8PCAiXG4iOworCXN0cmVhbSA8PCAiQ29weXJpZ2h0OiAiIDw8IGdldGxpY2Vuc2VMaW5l RWRpdFRleHQoKSA8PCAiXG4iOworCXN0cmVhbSA8PCAiU3VtbWFyeTogIiA8PCBnZXRzdW1tYXJ5 TGluZUVkaXRUZXh0KCkgPDwgIlxuIjsKKwlzdHJlYW0gPDwgIkdyb3VwOiAiIDw8IGdldGdyb3Vw TGluZUVkaXRUZXh0KCkgPDwgIlxuIjsKKwlzdHJlYW0gPDwgIkF1dGhvcjogIiA8PCBnZXRhdXRo b3JMaW5lRWRpdFRleHQoKSA8PCAiXG4iOworCXN0cmVhbSA8PCAiUGFja2FnZXI6ICIgPDwgZ2V0 cGFja2FnZXJMaW5lRWRpdFRleHQoKSA8PCAiXG4iOworCXN0cmVhbSA8PCAiQnVpbGRSb290OiAi IDw8ICIvdXNyL2xvY2FsIiA8PCAiXG4iOworCQorCXN0cmVhbSA8PCAiXG4iOworCXN0cmVhbSA8 PCAiJWRlc2NyaXB0aW9uXG4iOworCXN0cmVhbSA8PCBnZXRwcm9qZWN0RGVzY3JpcHRpb25NdWx0 aWxpbmVFZGl0VGV4dCgpPDwgIlxuIjsKKwkKKwlzdHJlYW0gPDwgIlxuIjsKKwlzdHJlYW0gPDwg IiVzZXR1cFxuIjsKKwlzdHJlYW0gPDwgIkNGTEFHUz1cIiRSUE1fT1BUX0ZMQUdTXCIgQ1hYRkxB R1M9XCIkUlBNX09QVF9GTEFHU1wiIC4vY29uZmlndXJlIFxcIiA8PCAiXG4iOworCXN0cmVhbSA8 PCAiLS10YXJnZXQ9IiA8PCBnZXRhcmNoQ29tYm9Cb3hUZXh0KCkgPDwgIiBcXCIgPDwgIlxuIjsK KwlzdHJlYW0gPDwgIiRMT0NBTEZMQUdTXG4iOworCQorCXN0cmVhbSA8PCAiXG4iOworCXN0cmVh bSA8PCAiJWJ1aWxkXG4iOworCXN0cmVhbSA8PCAiIyBTZXR1cCBmb3IgcGFyYWxsZWwgYnVpbGRz XG4iOworCXN0cmVhbSA8PCAibnVtcHJvY3M9YGVncmVwIC1jIF5jcHVbMC05XSsgL3Byb2Mvc3Rh dCB8fCA6YFxuIjsKKwlzdHJlYW0gPDwgImlmIFsgXCIkbnVtcHJvY3NcIiA9IFwiMFwiIF07IHRo ZW5cbiI7CisJc3RyZWFtIDw8ICJudW1wcm9jcz0xXG4iOworCXN0cmVhbSA8PCAiZmlcbiI7CisJ c3RyZWFtIDw8ICJtYWtlIC1qJG51bXByb2NzXG4iOworCQorCXN0cmVhbSA8PCAiXG4iOworCXN0 cmVhbSA8PCAiJWluc3RhbGxcbiI7CisJc3RyZWFtIDw8ICJtYWtlIGluc3RhbGwtc3RyaXAgREVT VERJUj0kUlBNX0JVSUxEX1JPT1RcbiI7CisJc3RyZWFtIDw8ICJjZCAkUlBNX0JVSUxEX1JPT1Rc biI7CisJc3RyZWFtIDw8ICJmaW5kIC4gLXR5cGUgZCB8IHNlZCAnMSwyZDtzLF5cXC4sXFwlYXR0 cigtXFwscm9vdFxcLHJvb3QpIFxcJWRpciAsJyA+ICRSUE1fQlVJTERfRElSL2ZpbGUubGlzdC4i IDw8IG1fcGFydC0+cHJvamVjdCgpLT5wcm9qZWN0TmFtZSgpIDw8ICJcbiI7CisJc3RyZWFtIDw8 ICJmaW5kIC4gLXR5cGUgZiB8IHNlZCAncyxeXFwuLFxcJWF0dHIoLVxcLHJvb3RcXCxyb290KSAs JyA+PiAkUlBNX0JVSUxEX0RJUi9maWxlLmxpc3QuIiA8PCBtX3BhcnQtPnByb2plY3QoKS0+cHJv amVjdE5hbWUoKSA8PCAiXG4iOworCXN0cmVhbSA8PCAiZmluZCAuIC10eXBlIGwgfCBzZWQgJ3Ms XlxcLixcXCVhdHRyKC1cXCxyb290XFwscm9vdCkgLCcgPj4gJFJQTV9CVUlMRF9ESVIvZmlsZS5s aXN0LiIgPDwgbV9wYXJ0LT5wcm9qZWN0KCktPnByb2plY3ROYW1lKCkgPDwgIlxuIjsKKwkKKwlz dHJlYW0gPDwgIlxuIjsKKwlzdHJlYW0gPDwgIiVjbGVhblxuIjsKKwlzdHJlYW0gPDwgInJtIC1y ZiAkUlBNX0JVSUxEX1JPT1QvKlxuIjsKKwlzdHJlYW0gPDwgInJtIC1yZiAkUlBNX0JVSUxEX0RJ Ui8iIDw8IG1fcGFydC0+cHJvamVjdCgpLT5wcm9qZWN0TmFtZSgpIDw8ICJcbiI7CisJc3RyZWFt IDw8ICJybSAtcmYgLi4vZmlsZS5saXN0LiIgPDwgbV9wYXJ0LT5wcm9qZWN0KCktPnByb2plY3RO YW1lKCkgPDwgIlxuIjsKKwkKKwlzdHJlYW0gPDwgIlxuIjsKKwlzdHJlYW0gPDwgIiVmaWxlcyAt ZiAuLi9maWxlLmxpc3QuIiA8PCBtX3BhcnQtPnByb2plY3QoKS0+cHJvamVjdE5hbWUoKSA8PCAi XG4iOworCQorCWZpbGUuY2xvc2UoKTsKKyAgICB9CisgICAgZWxzZSB7CisJa2REZWJ1ZygpIDw8 ICJUT0RPIDogaW50ZXJjZXB0IHdyaXRlIGVycm9yIGluIERpc3RwYXJ0RGlhbG9nOjpzbG90ZXhw b3J0U1BFQ1B1c2hCdXR0b25QcmVzc2VkKCkiOworICAgIH0KIH0KIC8vICAgIFFQdXNoQnV0dG9u KiBpbXBvcnRTUEVDUHVzaEJ1dHRvbjsKLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3RpbXBvcnRQ dXNoQnV0dG9uUHJlc3NlZCgpCi17Ci19CisKKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90 aW1wb3J0UHVzaEJ1dHRvblByZXNzZWQoKSB7fQogLy8gICAgUVB1c2hCdXR0b24qIHNyY1BhY2th Z2VQdXNoQnV0dG9uOwotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdHNyY1BhY2thZ2VQdXNoQnV0 dG9uUHJlc3NlZCgpCi17Ci19CisKKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90c3JjUGFj a2FnZVB1c2hCdXR0b25QcmVzc2VkKCkge30KIC8vICAgIFFQdXNoQnV0dG9uKiBnZW5IVE1MUHVz aEJ1dHRvbjsKLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3RnZW5IVE1MUHVzaEJ1dHRvblByZXNz ZWQoKQotewogCi19CisKKwordm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdGdlbkhUTUxQdXNoQnV0 dG9uUHJlc3NlZCgpIHt9CiAvLyAgICBRUHVzaEJ1dHRvbiogcmVzZXRIVE1MUHVzaEJ1dHRvbjsK LXZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3RyZXNldEhUTUxQdXNoQnV0dG9uUHJlc3NlZCgpCi17 CiAKLX0KKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90cmVzZXRIVE1MUHVzaEJ1dHRvblBy ZXNzZWQoKSB7fQogLy8gICAgUVRvb2xCdXR0b24qIHVwbG9hZEFkZEZpbGVUb29sQnV0dG9uOwot dm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdHVwbG9hZEFkZEZpbGVUb29sQnV0dG9uUHJlc3NlZCgp Ci17CiAKLX0KKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90dXBsb2FkQWRkRmlsZVRvb2xC dXR0b25QcmVzc2VkKCkge30KIC8vICAgIFFUb29sQnV0dG9uKiB1cGxvYWRSZW1vdmVUb29sQnV0 dG9uOwotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdHVwbG9hZFJlbW92ZVRvb2xCdXR0b25QcmVz c2VkKCkKLXsKIAotfQorCisKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3R1cGxvYWRSZW1vdmVU b29sQnV0dG9uUHJlc3NlZCgpIHt9CiAvLyAgICBRUHVzaEJ1dHRvbiogdXBsb2FkU3VibWl0UHVz aEJ1dHRvbjsKLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3R1cGxvYWRTdWJtaXRQdXNoQnV0dG9u UHJlc3NlZCgpCi17CiAKKworCit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90dXBsb2FkU3VibWl0 UHVzaEJ1dHRvblByZXNzZWQoKSB7CisgICAgCisgICAgaWYoZ2V0dXBsb2FkZnRwa2Rlb3JnQ2hl Y2tCb3hTdGF0ZSgpIHx8IGdldHVwbG9hZEFwcHNLREVjb21DaGVja0JveFN0YXRlKCkpCisJa2RE ZWJ1ZygpIDw8ICJJbXBsZW1lbnQgZnRwLmtkZS5vcmcgJiBhcHBzLmtkZS5jb20gZnRwIHRyYW5z ZmVyIiA8PCBlbmRsOworICAgIGVsc2UgeworICAgIAlvcCA9IG5ldyBRVXJsT3BlcmF0b3IoKTsK KwkKKwlmb3IodW5zaWduZWQgaW50IGk9MDsgaTx1cGxvYWRGaWxlTGlzdEJveC0+Y291bnQoKTsg aSsrKQorCSAgICBvcC0+Y29weSh1cGxvYWRGaWxlTGlzdEJveC0+dGV4dChpKSxnZXR1cGxvYWRV UkxMaW5lRWRpdFRleHQoKSk7CisgICAgfQogfQogLy8gICAgUVB1c2hCdXR0b24qIHVwbG9hZFJl c2V0UHVzaEJ1dHRvbjsKLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3R1cGxvYWRSZXNldFB1c2hC dXR0b25QcmVzc2VkKCkKLXsKIAorCisKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNsb3R1cGxvYWRS ZXNldFB1c2hCdXR0b25QcmVzc2VkKCkgeworICAgIHVwbG9hZEZpbGVMaXN0Qm94LT5jbGVhcigp OwogfQogCiAvLyBDb25uZWN0IFNsb3RzIHRvIHRoZSBmb2xsb3dpbmcgd2lkZ2V0cyBhbmQgYWRk CiAvLyBhY2Nlc3NvcnMgYW5kIG11dGF0b3JzCisKKwogLy8gICAgUUNoZWNrQm94KiBjdXN0b21Q cm9qZWN0Q2hlY2tCb3g7Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90Y3VzdG9tUHJvamVjdENo ZWNrQm94Q2hhbmdlZCgpCi17Ci0gIGtkRGVidWcgKCkgPDwgIk5ldyBTdGF0ZSIgPDwgY3VzdG9t UHJvamVjdENoZWNrQm94LT5pc0NoZWNrZWQoKSA8PCBlbmRsOwotICBzb3VyY2VPcHRpb25zR3Jv dXBCb3gtPnNldEVuYWJsZWQoY3VzdG9tUHJvamVjdENoZWNrQm94LT5pc0NoZWNrZWQoKSk7Cit2 b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90Y3VzdG9tUHJvamVjdENoZWNrQm94Q2hhbmdlZCgpIHsK KyAgICBrZERlYnVnICgpIDw8ICJOZXcgU3RhdGUiIDw8IGN1c3RvbVByb2plY3RDaGVja0JveC0+ aXNDaGVja2VkKCkgPDwgZW5kbDsKKyAgICBzb3VyY2VPcHRpb25zR3JvdXBCb3gtPnNldEVuYWJs ZWQoY3VzdG9tUHJvamVjdENoZWNrQm94LT5pc0NoZWNrZWQoKSk7CiB9Ci1ib29sIERpc3RwYXJ0 RGlhbG9nOjpnZXRjdXN0b21Qcm9qZWN0Q2hlY2tCb3hTdGF0ZSgpCi17Citib29sIERpc3RwYXJ0 RGlhbG9nOjpnZXRjdXN0b21Qcm9qZWN0Q2hlY2tCb3hTdGF0ZSgpIHsKICAgICByZXR1cm4gY3Vz dG9tUHJvamVjdENoZWNrQm94LT5pc0NoZWNrZWQoKTsKIH0KLXZvaWQgRGlzdHBhcnREaWFsb2c6 OnNldGN1c3RvbVByb2plY3RDaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpCi17Cit2b2lkIERpc3Rw YXJ0RGlhbG9nOjpzZXRjdXN0b21Qcm9qZWN0Q2hlY2tCb3hTdGF0ZShib29sIHN0YXRlKSB7CiAg ICAgY3VzdG9tUHJvamVjdENoZWNrQm94LT5zZXRDaGVja2VkKHN0YXRlKTsKIH0KIC8vICBRQ2hl Y2tCb3gqIHVwbG9hZEN1c3RvbUNoZWNrQm94Owotdm9pZCBEaXN0cGFydERpYWxvZzo6c2xvdHVw bG9hZEN1c3RvbUNoZWNrQm94Q2hhbmdlZCgpCi17Cit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzbG90 dXBsb2FkQ3VzdG9tQ2hlY2tCb3hDaGFuZ2VkKCkgewogICAgIHVwbG9hZFVSTExpbmVFZGl0LT5z ZXRFbmFibGVkKHVwbG9hZEN1c3RvbUNoZWNrQm94LT5pc0NoZWNrZWQoKSk7CiB9Ci1ib29sIERp c3RwYXJ0RGlhbG9nOjpnZXR1cGxvYWRDdXN0b21DaGVja0JveFN0YXRlKCkKLXsKK2Jvb2wgRGlz dHBhcnREaWFsb2c6OmdldHVwbG9hZEN1c3RvbUNoZWNrQm94U3RhdGUoKSB7CiAgICAgcmV0dXJu IHVwbG9hZEN1c3RvbUNoZWNrQm94LT5pc0NoZWNrZWQoKTsKIH0KLXZvaWQgRGlzdHBhcnREaWFs b2c6OnNldHVwbG9hZEN1c3RvbUNoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkKLXsKK3ZvaWQgRGlz dHBhcnREaWFsb2c6OnNldHVwbG9hZEN1c3RvbUNoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkgewog ICAgIHVwbG9hZEN1c3RvbUNoZWNrQm94LT5zZXRDaGVja2VkKHN0YXRlKTsKIH0KIAogLy8gQWRk IGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgZm9yIHRoZSBmb2xsb3dpbmcKIAogLy8gICBRQ2hlY2tC b3gqIGJ6aXBDaGVja0JveDsKLWJvb2wgRGlzdHBhcnREaWFsb2c6OmdldGJ6aXBDaGVja0JveFN0 YXRlKCkKLXsKK2Jvb2wgRGlzdHBhcnREaWFsb2c6OmdldGJ6aXBDaGVja0JveFN0YXRlKCkgewog ICAgIHJldHVybiBiemlwQ2hlY2tCb3gtPmlzQ2hlY2tlZCgpOwogfQotdm9pZCBEaXN0cGFydERp YWxvZzo6c2V0YnppcENoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkKLXsKK3ZvaWQgRGlzdHBhcnRE aWFsb2c6OnNldGJ6aXBDaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpIHsKICAgICBiemlwQ2hlY2tC b3gtPnNldENoZWNrZWQoc3RhdGUpOwogfQogLy8gICAgUUNoZWNrQm94KiBhcHBJY29uQ2hlY2tC b3g7Ci1ib29sIERpc3RwYXJ0RGlhbG9nOjpnZXRhcHBJY29uQ2hlY2tCb3hTdGF0ZSgpCi17Citi b29sIERpc3RwYXJ0RGlhbG9nOjpnZXRhcHBJY29uQ2hlY2tCb3hTdGF0ZSgpIHsKICAgICByZXR1 cm4gYXBwSWNvbkNoZWNrQm94LT5pc0NoZWNrZWQoKTsKIH0KLXZvaWQgRGlzdHBhcnREaWFsb2c6 OnNldGFwcEljb25DaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpCi17Cit2b2lkIERpc3RwYXJ0RGlh bG9nOjpzZXRhcHBJY29uQ2hlY2tCb3hTdGF0ZShib29sIHN0YXRlKSB7CiAgICAgYXBwSWNvbkNo ZWNrQm94LT5zZXRDaGVja2VkKHN0YXRlKTsKIH0KIC8vICAgIFFDaGVja0JveCogZ2VuSFRNTENo ZWNrQm94OwotYm9vbCBEaXN0cGFydERpYWxvZzo6Z2V0Z2VuSFRNTENoZWNrQm94U3RhdGUoKQot eworYm9vbCBEaXN0cGFydERpYWxvZzo6Z2V0Z2VuSFRNTENoZWNrQm94U3RhdGUoKSB7CiAgICAg cmV0dXJuIGdlbkhUTUxDaGVja0JveC0+aXNDaGVja2VkKCk7CiB9Ci12b2lkIERpc3RwYXJ0RGlh bG9nOjpzZXRnZW5IVE1MQ2hlY2tCb3hTdGF0ZShib29sIHN0YXRlKQotewordm9pZCBEaXN0cGFy dERpYWxvZzo6c2V0Z2VuSFRNTENoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkgewogICAgIGdlbkhU TUxDaGVja0JveC0+c2V0Q2hlY2tlZChzdGF0ZSk7CiB9CiAvLyAgICBRQ2hlY2tCb3gqIHVzZVJQ TUluZm9DaGVja0JveDsKLWJvb2wgRGlzdHBhcnREaWFsb2c6OmdldHVzZVJQTUluZm9DaGVja0Jv eFN0YXRlKCkKLXsKK2Jvb2wgRGlzdHBhcnREaWFsb2c6OmdldHVzZVJQTUluZm9DaGVja0JveFN0 YXRlKCkgewogICAgIHJldHVybiB1c2VSUE1JbmZvQ2hlY2tCb3gtPmlzQ2hlY2tlZCgpOwogfQot dm9pZCBEaXN0cGFydERpYWxvZzo6c2V0dXNlUlBNSW5mb0NoZWNrQm94U3RhdGUoYm9vbCBzdGF0 ZSkKLXsKLSAgICAgdXNlUlBNSW5mb0NoZWNrQm94LT5zZXRDaGVja2VkKHN0YXRlKTsKK3ZvaWQg RGlzdHBhcnREaWFsb2c6OnNldHVzZVJQTUluZm9DaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpIHsK KyAgICB1c2VSUE1JbmZvQ2hlY2tCb3gtPnNldENoZWNrZWQoc3RhdGUpOwogfQogLy8gICAgUUNo ZWNrQm94KiB1cGxvYWRBcHBzS0RFY29tQ2hlY2tCb3g7Ci1ib29sIERpc3RwYXJ0RGlhbG9nOjpn ZXR1cGxvYWRBcHBzS0RFY29tQ2hlY2tCb3hTdGF0ZSgpCi17Ci0gICAgIHJldHVybiB1cGxvYWRB cHBzS0RFY29tQ2hlY2tCb3gtPmlzQ2hlY2tlZCgpOwotfQotdm9pZCBEaXN0cGFydERpYWxvZzo6 c2V0dXBsb2FkQXBwc0tERWNvbUNoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkKLXsKLSAgICAgdXBs b2FkQXBwc0tERWNvbUNoZWNrQm94LT5zZXRDaGVja2VkKHN0YXRlKTsKK2Jvb2wgRGlzdHBhcnRE aWFsb2c6OmdldHVwbG9hZEFwcHNLREVjb21DaGVja0JveFN0YXRlKCkgeworICAgIHJldHVybiB1 cGxvYWRBcHBzS0RFY29tQ2hlY2tCb3gtPmlzQ2hlY2tlZCgpOworfQordm9pZCBEaXN0cGFydERp YWxvZzo6c2V0dXBsb2FkQXBwc0tERWNvbUNoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkgeworICAg IHVwbG9hZEFwcHNLREVjb21DaGVja0JveC0+c2V0Q2hlY2tlZChzdGF0ZSk7CiB9CiAvLyAgICBR Q2hlY2tCb3gqIHVwbG9hZGZ0cGtkZW9yZ0NoZWNrQm94OwotYm9vbCBEaXN0cGFydERpYWxvZzo6 Z2V0dXBsb2FkZnRwa2Rlb3JnQ2hlY2tCb3hTdGF0ZSgpCi17Citib29sIERpc3RwYXJ0RGlhbG9n OjpnZXR1cGxvYWRmdHBrZGVvcmdDaGVja0JveFN0YXRlKCkgewogICAgIHJldHVybiB1cGxvYWRm dHBrZGVvcmdDaGVja0JveC0+aXNDaGVja2VkKCk7CiB9Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpz ZXR1cGxvYWRmdHBrZGVvcmdDaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpCi17Cit2b2lkIERpc3Rw YXJ0RGlhbG9nOjpzZXR1cGxvYWRmdHBrZGVvcmdDaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpIHsK ICAgICB1cGxvYWRmdHBrZGVvcmdDaGVja0JveC0+c2V0Q2hlY2tlZChzdGF0ZSk7CiB9CiAvLyAg ICBRQ2hlY2tCb3gqIGRldlBhY2thZ2VDaGVja0JveDsKLWJvb2wgRGlzdHBhcnREaWFsb2c6Omdl dGRldlBhY2thZ2VDaGVja0JveFN0YXRlKCkKLXsKK2Jvb2wgRGlzdHBhcnREaWFsb2c6OmdldGRl dlBhY2thZ2VDaGVja0JveFN0YXRlKCkgewogICAgIHJldHVybiBkZXZQYWNrYWdlQ2hlY2tCb3gt PmlzQ2hlY2tlZCgpOwogfQotdm9pZCBEaXN0cGFydERpYWxvZzo6c2V0ZGV2UGFja2FnZUNoZWNr Qm94U3RhdGUoYm9vbCBzdGF0ZSkKLXsKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNldGRldlBhY2th Z2VDaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpIHsKICAgICBkZXZQYWNrYWdlQ2hlY2tCb3gtPnNl dENoZWNrZWQoc3RhdGUpOwogfQogLy8gICAgUUNoZWNrQm94KiBkb2NzUGFja2FnZUNoZWNrQm94 OwotYm9vbCBEaXN0cGFydERpYWxvZzo6Z2V0ZG9jc1BhY2thZ2VDaGVja0JveFN0YXRlKCkKLXsK K2Jvb2wgRGlzdHBhcnREaWFsb2c6OmdldGRvY3NQYWNrYWdlQ2hlY2tCb3hTdGF0ZSgpIHsKICAg ICByZXR1cm4gZG9jc1BhY2thZ2VDaGVja0JveC0+aXNDaGVja2VkKCk7CiB9Ci12b2lkIERpc3Rw YXJ0RGlhbG9nOjpzZXRkb2NzUGFja2FnZUNoZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSkKLXsKK3Zv aWQgRGlzdHBhcnREaWFsb2c6OnNldGRvY3NQYWNrYWdlQ2hlY2tCb3hTdGF0ZShib29sIHN0YXRl KSB7CiAgICAgZG9jc1BhY2thZ2VDaGVja0JveC0+c2V0Q2hlY2tlZChzdGF0ZSk7CiB9CiAvLyAg ICBRUHJvZ3Jlc3NCYXIqIHVwbG9hZFByb2dyZXNzQmFyOwotaW50IERpc3RwYXJ0RGlhbG9nOjpn ZXR1cGxvYWRQcm9ncmVzc0JhclByb2dyZXNzKCkKLXsKK2ludCBEaXN0cGFydERpYWxvZzo6Z2V0 dXBsb2FkUHJvZ3Jlc3NCYXJQcm9ncmVzcygpIHsKICAgICByZXR1cm4gdXBsb2FkUHJvZ3Jlc3NC YXItPnByb2dyZXNzKCk7CiB9Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXR1cGxvYWRQcm9ncmVz c0JhclByb2dyZXNzKGludCBwcm9ncmVzcykKLXsKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNldHVw bG9hZFByb2dyZXNzQmFyUHJvZ3Jlc3MoaW50IHByb2dyZXNzKSB7CiAgICAgdXBsb2FkUHJvZ3Jl c3NCYXItPnNldFByb2dyZXNzKCBwcm9ncmVzcyApOwogfQogLy8gICAgUUxpbmVFZGl0KiBhcmNo TmFtZUZvcm1hdExpbmVFZGl0OwotUVN0cmluZyBEaXN0cGFydERpYWxvZzo6Z2V0YXJjaE5hbWVG b3JtYXRMaW5lRWRpdFRleHQoKQoteworUVN0cmluZyBEaXN0cGFydERpYWxvZzo6Z2V0YXJjaE5h bWVGb3JtYXRMaW5lRWRpdFRleHQoKSB7CiAgICAgcmV0dXJuIGFyY2hOYW1lRm9ybWF0TGluZUVk aXQtPnRleHQoKTsKIH0KLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNldGFyY2hOYW1lRm9ybWF0TGlu ZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkKLXsKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNldGFyY2hO YW1lRm9ybWF0TGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkgewogICAgIGFyY2hOYW1lRm9ybWF0 TGluZUVkaXQtPnNldFRleHQodGV4dCk7CiB9CiAvLyAgICBRTGluZUVkaXQqIGFwcE5hbWVMaW5l RWRpdDsKLVFTdHJpbmcgRGlzdHBhcnREaWFsb2c6OmdldGFwcE5hbWVGb3JtYXRMaW5lRWRpdFRl eHQoKQoteworUVN0cmluZyBEaXN0cGFydERpYWxvZzo6Z2V0YXBwTmFtZUZvcm1hdExpbmVFZGl0 VGV4dCgpIHsKICAgICByZXR1cm4gYXBwTmFtZUxpbmVFZGl0LT50ZXh0KCk7CiB9Ci12b2lkIERp c3RwYXJ0RGlhbG9nOjpzZXRhcHBOYW1lRm9ybWF0TGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkK LXsKK3ZvaWQgRGlzdHBhcnREaWFsb2c6OnNldGFwcE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoUVN0 cmluZyB0ZXh0KSB7CiAgICAgYXBwTmFtZUxpbmVFZGl0LT5zZXRUZXh0KHRleHQpOwogfQogLy8g ICAgUUxpbmVFZGl0KiBzdW1tYXJ5TGluZUVkaXQ7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpn ZXRzdW1tYXJ5TGluZUVkaXRUZXh0KCkKLXsKLSAgIHJldHVybiBzdW1tYXJ5TGluZUVkaXQtPnRl eHQoKTsKLX0KLXZvaWQgRGlzdHBhcnREaWFsb2c6OnNldHN1bW1hcnlMaW5lRWRpdFRleHQoUVN0 cmluZyB0ZXh0KQotewotICAgc3VtbWFyeUxpbmVFZGl0LT5zZXRUZXh0KHRleHQpOworUVN0cmlu ZyBEaXN0cGFydERpYWxvZzo6Z2V0c3VtbWFyeUxpbmVFZGl0VGV4dCgpIHsKKyAgICByZXR1cm4g c3VtbWFyeUxpbmVFZGl0LT50ZXh0KCk7Cit9Cit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRzdW1t YXJ5TGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkgeworICAgIHN1bW1hcnlMaW5lRWRpdC0+c2V0 VGV4dCh0ZXh0KTsKIH0KIC8vICAgIFFMaW5lRWRpdCogYXV0aG9yTGluZUVkaXQ7Ci1RU3RyaW5n IERpc3RwYXJ0RGlhbG9nOjpnZXRhdXRob3JMaW5lRWRpdFRleHQoKQotewotICAgcmV0dXJuIGF1 dGhvckxpbmVFZGl0LT50ZXh0KCk7Ci19Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRhdXRob3JM aW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KQotewotICAgYXV0aG9yTGluZUVkaXQtPnNldFRleHQo dGV4dCk7CitRU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRhdXRob3JMaW5lRWRpdFRleHQoKSB7 CisgICAgcmV0dXJuIGF1dGhvckxpbmVFZGl0LT50ZXh0KCk7Cit9Cit2b2lkIERpc3RwYXJ0RGlh bG9nOjpzZXRhdXRob3JMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KSB7CisgICAgYXV0aG9yTGlu ZUVkaXQtPnNldFRleHQodGV4dCk7CiB9CiAvLyAgICBRTGluZUVkaXQqIGdyb3VwTGluZUVkaXQ7 Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRncm91cExpbmVFZGl0VGV4dCgpCi17CitRU3Ry aW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRncm91cExpbmVFZGl0VGV4dCgpIHsKICAgICByZXR1cm4g Z3JvdXBMaW5lRWRpdC0+dGV4dCgpOwogfQotdm9pZCBEaXN0cGFydERpYWxvZzo6c2V0Z3JvdXBM aW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KQotewordm9pZCBEaXN0cGFydERpYWxvZzo6c2V0Z3Jv dXBMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KSB7CiAgICAgZ3JvdXBMaW5lRWRpdC0+c2V0VGV4 dCh0ZXh0KTsKIH0KIC8vICAgIFFMaW5lRWRpdCogcmVsZWFzZUxpbmVFZGl0OwotUVN0cmluZyBE aXN0cGFydERpYWxvZzo6Z2V0cmVsZWFzZUxpbmVFZGl0VGV4dCgpCi17Ci0gICByZXR1cm4gcmVs ZWFzZUxpbmVFZGl0LT50ZXh0KCk7Ci19Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRyZWxlYXNl TGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkKLXsKLSAgIHJlbGVhc2VMaW5lRWRpdC0+c2V0VGV4 dCh0ZXh0KTsKK1FTdHJpbmcgRGlzdHBhcnREaWFsb2c6OmdldHJlbGVhc2VMaW5lRWRpdFRleHQo KSB7CisgICAgcmV0dXJuIHJlbGVhc2VMaW5lRWRpdC0+dGV4dCgpOworfQordm9pZCBEaXN0cGFy dERpYWxvZzo6c2V0cmVsZWFzZUxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpIHsKKyAgICByZWxl YXNlTGluZUVkaXQtPnNldFRleHQodGV4dCk7CiB9CiAvLyAgICBRTGluZUVkaXQqIFZlcnNpb25M aW5lRWRpdDsKLVFTdHJpbmcgRGlzdHBhcnREaWFsb2c6OmdldHZlcnNpb25MaW5lRWRpdFRleHQo KQotewotICAgcmV0dXJuIHZlcnNpb25MaW5lRWRpdC0+dGV4dCgpOwotfQotdm9pZCBEaXN0cGFy dERpYWxvZzo6c2V0dmVyc2lvbkxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpCi17Ci0gICAgIHZl cnNpb25MaW5lRWRpdC0+c2V0VGV4dCggdGV4dCApOworUVN0cmluZyBEaXN0cGFydERpYWxvZzo6 Z2V0dmVyc2lvbkxpbmVFZGl0VGV4dCgpIHsKKyAgICByZXR1cm4gdmVyc2lvbkxpbmVFZGl0LT50 ZXh0KCk7Cit9Cit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXR2ZXJzaW9uTGluZUVkaXRUZXh0KFFT dHJpbmcgdGV4dCkgeworICAgIHZlcnNpb25MaW5lRWRpdC0+c2V0VGV4dCggdGV4dCApOwogfQog Ly8gICAgUUxpbmVFZGl0KiBWZW5kb3JMaW5lRWRpdDsKLVFTdHJpbmcgRGlzdHBhcnREaWFsb2c6 OmdldHZlbmRvckxpbmVFZGl0VGV4dCgpCi17CitRU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXR2 ZW5kb3JMaW5lRWRpdFRleHQoKSB7CiAgICAgcmV0dXJuIHZlbmRvckxpbmVFZGl0LT50ZXh0KCk7 CiB9Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXR2ZW5kb3JMaW5lRWRpdFRleHQoUVN0cmluZyB0 ZXh0KQotewordm9pZCBEaXN0cGFydERpYWxvZzo6c2V0dmVuZG9yTGluZUVkaXRUZXh0KFFTdHJp bmcgdGV4dCkgewogICAgIHZlbmRvckxpbmVFZGl0LT5zZXRUZXh0KHRleHQpOwogfQogLy8gICAg UUxpbmVFZGl0KiBMaWNlbnNlTGluZUVkaXQ7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRs aWNlbnNlTGluZUVkaXRUZXh0KCkKLXsKLSAgIHJldHVybiBsaWNlbnNlTGluZUVkaXQtPnRleHQo KTsKK1FTdHJpbmcgRGlzdHBhcnREaWFsb2c6OmdldGxpY2Vuc2VMaW5lRWRpdFRleHQoKSB7Cisg ICAgcmV0dXJuIGxpY2Vuc2VMaW5lRWRpdC0+dGV4dCgpOwogfQotdm9pZCBEaXN0cGFydERpYWxv Zzo6c2V0bGljZW5zZUxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpCi17Cit2b2lkIERpc3RwYXJ0 RGlhbG9nOjpzZXRsaWNlbnNlTGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkgewogICAgIGxpY2Vu c2VMaW5lRWRpdC0+c2V0VGV4dCh0ZXh0KTsKIH0KIC8vICAgIFFMaW5lRWRpdCogdXBsb2FkVVJM TGluZUVkaXQ7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXR1cGxvYWRVUkxMaW5lRWRpdFRl eHQoKQoteworUVN0cmluZyBEaXN0cGFydERpYWxvZzo6Z2V0dXBsb2FkVVJMTGluZUVkaXRUZXh0 KCkgewogICAgIHJldHVybiB1cGxvYWRVUkxMaW5lRWRpdC0+dGV4dCgpOwogfQotdm9pZCBEaXN0 cGFydERpYWxvZzo6c2V0dXBsb2FkVVJMTGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCkKLXsKLSAg ICAgdXBsb2FkVVJMTGluZUVkaXQtPnNldFRleHQodGV4dCk7Cit2b2lkIERpc3RwYXJ0RGlhbG9n OjpzZXR1cGxvYWRVUkxMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KSB7CisgICAgdXBsb2FkVVJM TGluZUVkaXQtPnNldFRleHQodGV4dCk7CiB9CiAvLyAgICBRTGluZUVkaXQqIFBhY2thZ2VyTGlu ZUVkaXQ7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRwYWNrYWdlckxpbmVFZGl0VGV4dCgp Ci17Ci0gICByZXR1cm4gcGFja2FnZXJMaW5lRWRpdC0+dGV4dCgpOwotfQotdm9pZCBEaXN0cGFy dERpYWxvZzo6c2V0cGFja2FnZXJMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KQotewotICAgcGFj a2FnZXJMaW5lRWRpdC0+c2V0VGV4dCh0ZXh0KTsKK1FTdHJpbmcgRGlzdHBhcnREaWFsb2c6Omdl dHBhY2thZ2VyTGluZUVkaXRUZXh0KCkgeworICAgIHJldHVybiBwYWNrYWdlckxpbmVFZGl0LT50 ZXh0KCk7Cit9Cit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRwYWNrYWdlckxpbmVFZGl0VGV4dChR U3RyaW5nIHRleHQpIHsKKyAgICBwYWNrYWdlckxpbmVFZGl0LT5zZXRUZXh0KHRleHQpOwogfQog Ly8gICAgUUNvbWJvQm94KiBhcmNoQ29tYm9Cb3g7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpn ZXRhcmNoQ29tYm9Cb3hUZXh0KCkKLXsKLSAgIHJldHVybiBhcmNoQ29tYm9Cb3gtPmN1cnJlbnRU ZXh0KCk7Ci19Ci1pbnQgRGlzdHBhcnREaWFsb2c6OmdldGFyY2hDb21ib0JveEl0ZW0oKQotewot ICAgcmV0dXJuIGFyY2hDb21ib0JveC0+Y3VycmVudEl0ZW0oKTsKLX0KLXZvaWQgRGlzdHBhcnRE aWFsb2c6OnNldGFyY2hDb21ib0JveEl0ZW0oaW50IGl0ZW0pCi17Ci0gICBhcmNoQ29tYm9Cb3gt PnNldEN1cnJlbnRJdGVtKCBpdGVtICk7CitRU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRhcmNo Q29tYm9Cb3hUZXh0KCkgeworICAgIHJldHVybiBhcmNoQ29tYm9Cb3gtPmN1cnJlbnRUZXh0KCk7 Cit9CitpbnQgRGlzdHBhcnREaWFsb2c6OmdldGFyY2hDb21ib0JveEl0ZW0oKSB7CisgICAgcmV0 dXJuIGFyY2hDb21ib0JveC0+Y3VycmVudEl0ZW0oKTsKK30KK3ZvaWQgRGlzdHBhcnREaWFsb2c6 OnNldGFyY2hDb21ib0JveEl0ZW0oaW50IGl0ZW0pIHsKKyAgICBhcmNoQ29tYm9Cb3gtPnNldEN1 cnJlbnRJdGVtKCBpdGVtICk7CiB9CiAvLyAgICBRTGlzdEJveCogdXBsb2FkRmlsZUxpc3RCb3g7 Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXR1cGxvYWRGaWxlTGlzdEJveFRleHQoKQotewor UVN0cmluZyBEaXN0cGFydERpYWxvZzo6Z2V0dXBsb2FkRmlsZUxpc3RCb3hUZXh0KCkgewogICAg IHJldHVybiB1cGxvYWRGaWxlTGlzdEJveC0+Y3VycmVudFRleHQoKTsKIH0KIAotaW50IERpc3Rw YXJ0RGlhbG9nOjpnZXR1cGxvYWRGaWxlTGlzdEJveEl0ZW0oKQoteworaW50IERpc3RwYXJ0RGlh bG9nOjpnZXR1cGxvYWRGaWxlTGlzdEJveEl0ZW0oKSB7CiAgICAgcmV0dXJuIHVwbG9hZEZpbGVM aXN0Qm94LT5jdXJyZW50SXRlbSgpOwogfQotdm9pZCBEaXN0cGFydERpYWxvZzo6c2V0dXBsb2Fk RmlsZUxpc3RCb3hJdGVtKGludCBpdGVtKQotewordm9pZCBEaXN0cGFydERpYWxvZzo6c2V0dXBs b2FkRmlsZUxpc3RCb3hJdGVtKGludCBpdGVtKSB7CiAgICAgdXBsb2FkRmlsZUxpc3RCb3gtPnNl dEN1cnJlbnRJdGVtKCBpdGVtKTsKIH0KIC8vICAgIFFMaXN0Qm94KiBzcmNEaXN0RmlsZUxpc3RC b3g7Ci1RU3RyaW5nIERpc3RwYXJ0RGlhbG9nOjpnZXRzcmNEaXN0RmlsZUxpc3RCb3hUZXh0KCkK LXsKK1FTdHJpbmcgRGlzdHBhcnREaWFsb2c6OmdldHNyY0Rpc3RGaWxlTGlzdEJveFRleHQoKSB7 CiAgICAgcmV0dXJuIHNyY0Rpc3RGaWxlTGlzdEJveC0+Y3VycmVudFRleHQgKCk7CiB9Ci1pbnQg RGlzdHBhcnREaWFsb2c6OmdldHNyY0Rpc3RGaWxlTGlzdEJveEl0ZW0oKQoteworaW50IERpc3Rw YXJ0RGlhbG9nOjpnZXRzcmNEaXN0RmlsZUxpc3RCb3hJdGVtKCkgewogICAgIHJldHVybiBzcmNE aXN0RmlsZUxpc3RCb3gtPmN1cnJlbnRJdGVtICgpOwogfQotdm9pZCBEaXN0cGFydERpYWxvZzo6 c2V0c3JjRGlzdEZpbGVMaXN0Qm94SXRlbShpbnQgaXRlbSkKLXsKK3ZvaWQgRGlzdHBhcnREaWFs b2c6OnNldHNyY0Rpc3RGaWxlTGlzdEJveEl0ZW0oaW50IGl0ZW0pIHsKICAgICBzcmNEaXN0Rmls ZUxpc3RCb3gtPnNldEN1cnJlbnRJdGVtKCBpdGVtICk7CiB9CiAvLyAgICBRTXVsdGlMaW5lRWRp dCogcHJvamVjdERlc2NyaXB0aW9uTXVsdGlsaW5lRWRpdDsKLVFTdHJpbmcgRGlzdHBhcnREaWFs b2c6OmdldHByb2plY3REZXNjcmlwdGlvbk11bHRpbGluZUVkaXRUZXh0KCkKLXsKK1FTdHJpbmcg RGlzdHBhcnREaWFsb2c6OmdldHByb2plY3REZXNjcmlwdGlvbk11bHRpbGluZUVkaXRUZXh0KCkg ewogICAgIHJldHVybiBwcm9qZWN0RGVzY3JpcHRpb25NdWx0aWxpbmVFZGl0LT50ZXh0KCk7CiB9 Ci12b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRwcm9qZWN0RGVzY3JpcHRpb25NdWx0aWxpbmVFZGl0 VGV4dChRU3RyaW5nIHRleHQpCi17Cit2b2lkIERpc3RwYXJ0RGlhbG9nOjpzZXRwcm9qZWN0RGVz Y3JpcHRpb25NdWx0aWxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpIHsKICAgICBwcm9qZWN0RGVz Y3JpcHRpb25NdWx0aWxpbmVFZGl0LT5zZXRUZXh0KHRleHQpOwogfQorCisKK3ZvaWQgRGlzdHBh cnREaWFsb2c6OmxvYWRTZXR0aW5ncygpIHsKKyAgICBRRG9tRG9jdW1lbnQgJmRvbSA9ICptX3Bh cnQtPnByb2plY3REb20oKTsKKyAgICBkaXIgPSBtX3BhcnQtPnByb2plY3QoKS0+cHJvamVjdERp cmVjdG9yeSgpOworICAgIFFEaXIgcHJvamVjdGRpcihkaXIpOworICAgIHNyY0Rpc3RGaWxlTGlz dEJveC0+aW5zZXJ0U3RyaW5nTGlzdChwcm9qZWN0ZGlyLmVudHJ5TGlzdCgpKTsKKworICAgIC8v IEZpcnN0IFRhYgorICAgIHNldGN1c3RvbVByb2plY3RDaGVja0JveFN0YXRlKERvbVV0aWw6OnJl YWRCb29sRW50cnkoZG9tLCIvZGlzdC9jdXN0b20iLGZhbHNlKSk7CisgICAgc2xvdGN1c3RvbVBy b2plY3RDaGVja0JveENoYW5nZWQoKTsKKyAgICBzZXRiemlwQ2hlY2tCb3hTdGF0ZShEb21VdGls OjpyZWFkQm9vbEVudHJ5KGRvbSwiL2Rpc3QvYnppcCIsZmFsc2UpKTsKKyAgICBzZXRhcmNoTmFt ZUZvcm1hdExpbmVFZGl0VGV4dChEb21VdGlsOjpyZWFkRW50cnkoZG9tLCIvZGlzdC9hcmNobmFt ZSIpKTsKKworCisgICAgLy8gU2Vjb25kIFRhYgorICAgIHNldGFwcE5hbWVGb3JtYXRMaW5lRWRp dFRleHQoRG9tVXRpbDo6cmVhZEVudHJ5KGRvbSwiL2Rpc3QvYXBwbmFtZSIpKTsKKyAgICBzZXR2 ZXJzaW9uTGluZUVkaXRUZXh0KERvbVV0aWw6OnJlYWRFbnRyeShkb20sIi9kaXN0L3ZlcnNpb24i KSk7CisgICAgc2V0cmVsZWFzZUxpbmVFZGl0VGV4dChEb21VdGlsOjpyZWFkRW50cnkoZG9tLCIv ZGlzdC9yZWxlYXNlIikpOworICAgIHNldHZlbmRvckxpbmVFZGl0VGV4dChEb21VdGlsOjpyZWFk RW50cnkoZG9tLCIvZGlzdC92ZW5kb3IiKSk7CisgICAgc2V0bGljZW5zZUxpbmVFZGl0VGV4dChE b21VdGlsOjpyZWFkRW50cnkoZG9tLCIvZGlzdC9saWNlbmNlIikpOworICAgIHNldHN1bW1hcnlM aW5lRWRpdFRleHQoRG9tVXRpbDo6cmVhZEVudHJ5KGRvbSwiL2Rpc3Qvc3VtbWFyeSIpKTsKKyAg ICBzZXRncm91cExpbmVFZGl0VGV4dChEb21VdGlsOjpyZWFkRW50cnkoZG9tLCIvZGlzdC9ncm91 cCIpKTsKKyAgICBzZXRhdXRob3JMaW5lRWRpdFRleHQoRG9tVXRpbDo6cmVhZEVudHJ5KGRvbSwi L2Rpc3QvYXV0aG9yIikpOworICAgIHNldHBhY2thZ2VyTGluZUVkaXRUZXh0KERvbVV0aWw6OnJl YWRFbnRyeShkb20sIi9kaXN0L3BhY2thZ2VyIikpOworICAgIHNldHByb2plY3REZXNjcmlwdGlv bk11bHRpbGluZUVkaXRUZXh0KERvbVV0aWw6OnJlYWRFbnRyeShkb20sIi9kaXN0L2Rlc2NyaXB0 aW9uIikpOworICAgIHNldGRldlBhY2thZ2VDaGVja0JveFN0YXRlKERvbVV0aWw6OnJlYWRCb29s RW50cnkoZG9tLCIvZGlzdC9kZXZwYWNrYWdlIikpOworICAgIHNldGRvY3NQYWNrYWdlQ2hlY2tC b3hTdGF0ZShEb21VdGlsOjpyZWFkQm9vbEVudHJ5KGRvbSwiL2Rpc3QvZG9jc3BhY2thZ2UiKSk7 CisgICAgc2V0YXBwSWNvbkNoZWNrQm94U3RhdGUoRG9tVXRpbDo6cmVhZEJvb2xFbnRyeShkb20s Ii9kaXN0L2FwcGljb24iKSk7CisgICAgc2V0YXJjaENvbWJvQm94SXRlbShEb21VdGlsOjpyZWFk SW50RW50cnkoZG9tLCIvZGlzdC9hcmNoIikpOworICAgIAorICAgIC8vIFRoaXJkIFRhYgorICAg IHNldGdlbkhUTUxDaGVja0JveFN0YXRlKERvbVV0aWw6OnJlYWRCb29sRW50cnkoZG9tLCIvZGlz dC9nZW5IVE1MIikpOworICAgIHNldHVzZVJQTUluZm9DaGVja0JveFN0YXRlKERvbVV0aWw6OnJl YWRCb29sRW50cnkoZG9tLCIvZGlzdC91c2VSUE0iKSk7CisgICAgc2V0dXBsb2FkZnRwa2Rlb3Jn Q2hlY2tCb3hTdGF0ZShEb21VdGlsOjpyZWFkQm9vbEVudHJ5KGRvbSwiL2Rpc3QvZnRwa2RlIikp OworICAgIHNldHVwbG9hZEFwcHNLREVjb21DaGVja0JveFN0YXRlKERvbVV0aWw6OnJlYWRCb29s RW50cnkoZG9tLCIvZGlzdC9hcHBza2RlIikpOworICAgIHNldHVwbG9hZEN1c3RvbUNoZWNrQm94 U3RhdGUoRG9tVXRpbDo6cmVhZEJvb2xFbnRyeShkb20sIi9kaXN0L2N1c3RvbSIpKTsKKyAgICBz bG90dXBsb2FkQ3VzdG9tQ2hlY2tCb3hDaGFuZ2VkKCk7CisgICAgc2V0dXBsb2FkVVJMTGluZUVk aXRUZXh0KERvbVV0aWw6OnJlYWRFbnRyeShkb20sIi9kaXN0L3VybCIpKTsKK30KKworCisKKwor dm9pZCBEaXN0cGFydERpYWxvZzo6c3RvcmVTZXR0aW5ncygpIHsKKyAgICBRRG9tRG9jdW1lbnQg JmRvbSA9ICptX3BhcnQtPnByb2plY3REb20oKTsKKworICAgIC8vIEZpcnN0IFRhYgorICAgIERv bVV0aWw6OndyaXRlQm9vbEVudHJ5KGRvbSwiL2Rpc3QvY3VzdG9tIixnZXRjdXN0b21Qcm9qZWN0 Q2hlY2tCb3hTdGF0ZSgpKTsKKyAgICBEb21VdGlsOjp3cml0ZUJvb2xFbnRyeShkb20sIi9kaXN0 L2J6aXAiLGdldGJ6aXBDaGVja0JveFN0YXRlKCkpOworICAgIERvbVV0aWw6OndyaXRlRW50cnko ZG9tLCIvZGlzdC9hcmNobmFtZSIsZ2V0YXJjaE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoKSk7CisK KyAgICAvLyBTZWNvbmQgVGFiCisgICAgRG9tVXRpbDo6d3JpdGVFbnRyeShkb20sIi9kaXN0L2Fw cG5hbWUiLGdldGFwcE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoKSk7CisgICAgRG9tVXRpbDo6d3Jp dGVFbnRyeShkb20sIi9kaXN0L3ZlcnNpb24iLGdldHZlcnNpb25MaW5lRWRpdFRleHQoKSk7Cisg ICAgRG9tVXRpbDo6d3JpdGVFbnRyeShkb20sIi9kaXN0L3JlbGVhc2UiLGdldHJlbGVhc2VMaW5l RWRpdFRleHQoKSk7CisgICAgRG9tVXRpbDo6d3JpdGVFbnRyeShkb20sIi9kaXN0L3ZlbmRvciIs Z2V0dmVuZG9yTGluZUVkaXRUZXh0KCkpOworICAgIERvbVV0aWw6OndyaXRlRW50cnkoZG9tLCIv ZGlzdC9saWNlbmNlIixnZXRsaWNlbnNlTGluZUVkaXRUZXh0KCkpOworICAgIERvbVV0aWw6Ondy aXRlRW50cnkoZG9tLCIvZGlzdC9zdW1tYXJ5IixnZXRzdW1tYXJ5TGluZUVkaXRUZXh0KCkpOwor ICAgIERvbVV0aWw6OndyaXRlRW50cnkoZG9tLCIvZGlzdC9ncm91cCIsZ2V0Z3JvdXBMaW5lRWRp dFRleHQoKSk7CisgICAgRG9tVXRpbDo6d3JpdGVFbnRyeShkb20sIi9kaXN0L2F1dGhvciIsZ2V0 YXV0aG9yTGluZUVkaXRUZXh0KCkpOworICAgIERvbVV0aWw6OndyaXRlRW50cnkoZG9tLCIvZGlz dC9wYWNrYWdlciIsZ2V0cGFja2FnZXJMaW5lRWRpdFRleHQoKSk7CisgICAgRG9tVXRpbDo6d3Jp dGVFbnRyeShkb20sIi9kaXN0L2Rlc2NyaXB0aW9uIixnZXRwcm9qZWN0RGVzY3JpcHRpb25NdWx0 aWxpbmVFZGl0VGV4dCgpKTsKKyAgICBEb21VdGlsOjp3cml0ZUJvb2xFbnRyeShkb20sIi9kaXN0 L2RldnBhY2thZ2UiLGdldGRldlBhY2thZ2VDaGVja0JveFN0YXRlKCkpOworICAgIERvbVV0aWw6 OndyaXRlQm9vbEVudHJ5KGRvbSwiL2Rpc3QvZG9jc3BhY2thZ2UiLGdldGRvY3NQYWNrYWdlQ2hl Y2tCb3hTdGF0ZSgpKTsKKyAgICBEb21VdGlsOjp3cml0ZUJvb2xFbnRyeShkb20sIi9kaXN0L2Fw cGljb24iLGdldGFwcEljb25DaGVja0JveFN0YXRlKCkpOworICAgIERvbVV0aWw6OndyaXRlSW50 RW50cnkoZG9tLCIvZGlzdC9hcmNoIixnZXRhcmNoQ29tYm9Cb3hJdGVtKCkpOworICAgIAorICAg IC8vIFRoaXJkIFRhYgorICAgIERvbVV0aWw6OndyaXRlQm9vbEVudHJ5KGRvbSwiL2Rpc3QvZ2Vu SFRNTCIsZ2V0Z2VuSFRNTENoZWNrQm94U3RhdGUoKSk7CisgICAgRG9tVXRpbDo6d3JpdGVCb29s RW50cnkoZG9tLCIvZGlzdC91c2VSUE0iLGdldHVzZVJQTUluZm9DaGVja0JveFN0YXRlKCkpOwor ICAgIERvbVV0aWw6OndyaXRlQm9vbEVudHJ5KGRvbSwiL2Rpc3QvZnRwa2RlIixnZXR1cGxvYWRm dHBrZGVvcmdDaGVja0JveFN0YXRlKCkpOworICAgIERvbVV0aWw6OndyaXRlQm9vbEVudHJ5KGRv bSwiL2Rpc3QvYXBwc2tkZSIsZ2V0dXBsb2FkQXBwc0tERWNvbUNoZWNrQm94U3RhdGUoKSk7Cisg ICAgRG9tVXRpbDo6d3JpdGVCb29sRW50cnkoZG9tLCIvZGlzdC9jdXN0b20iLGdldHVwbG9hZEN1 c3RvbUNoZWNrQm94U3RhdGUoKSk7CisgICAgRG9tVXRpbDo6d3JpdGVFbnRyeShkb20sIi9kaXN0 L3VybCIsZ2V0dXBsb2FkVVJMTGluZUVkaXRUZXh0KCkpOworfQorCisKIAogI2luY2x1ZGUgImRp c3RwYXJ0X3dpZGdldC5tb2MiCkluZGV4OiBkaXN0cGFydF93aWRnZXQuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvaG9tZS9rZGUva2RldmVsb3AvcGFydHMvZGlzdHBhcnQvZGlzdHBhcnRfd2lkZ2V0 LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1yMS43IGRpc3RwYXJ0X3dpZGdl dC5oCi0tLSBkaXN0cGFydF93aWRnZXQuaAkyMiBNYXIgMjAwMiAyMTo1Njo1MyAtMDAwMAkxLjcK KysrIGRpc3RwYXJ0X3dpZGdldC5oCTEyIFNlcCAyMDAyIDE2OjM5OjM0IC0wMDAwCkBAIC0xNSwx OSArMTUsMjEgQEAKIAogY2xhc3MgS0RldlByb2plY3Q7CiBjbGFzcyBEaXN0cGFydFBhcnQ7Citj bGFzcyBRVXJsT3BlcmF0b3I7CitjbGFzcyBLUHJvY2VzczsKKwogbmFtZXNwYWNlIEtQYXJ0cyB7 Ci0gIGNsYXNzIFJlYWRPbmx5UGFydDsKK2NsYXNzIFJlYWRPbmx5UGFydDsKIH0KIAogCi1jbGFz cyBEaXN0cGFydERpYWxvZyA6IHB1YmxpYyBkaXN0cGFydF91aQotewotICBRX09CSkVDVAorY2xh c3MgRGlzdHBhcnREaWFsb2cgOiBwdWJsaWMgZGlzdHBhcnRfdWkgeworICAgIFFfT0JKRUNUCiAK IHB1YmxpYzoKIAotICBEaXN0cGFydERpYWxvZyhEaXN0cGFydFBhcnQgKnBhcnQpOwotICB+RGlz dHBhcnREaWFsb2coKTsKKyAgICBEaXN0cGFydERpYWxvZyhEaXN0cGFydFBhcnQgKnBhcnQpOwor ICAgIH5EaXN0cGFydERpYWxvZygpOwogCiBzaWduYWxzOgogICAgIHZvaWQgb2theSgpOwpAQCAt NDQsNDcgKzQ2LDQ4IEBACiAgICAgdm9pZCB1cGxvYWQoKTsKICAgICB2b2lkIHJlc2V0dXBsb2Fk KCk7CiAKLS8vIEFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgdG8gY29udHJvbCBHVUkKLS8vIENvbm5l Y3QgU2xvdHMgdG8gdGhlIGZvbGxvd2luZyB3aWRnZXRzCisgICAgLy8gQWNjZXNzb3JzIGFuZCBt dXRhdG9ycyB0byBjb250cm9sIEdVSQorICAgIC8vIENvbm5lY3QgU2xvdHMgdG8gdGhlIGZvbGxv d2luZyB3aWRnZXRzCiAKIAogcHVibGljIHNsb3RzOgotLy8gICAgUVB1c2hCdXR0b24qIG9rYXlQ dXNoQnV0dG9uOworICAgIC8vICAgIFFQdXNoQnV0dG9uKiBva2F5UHVzaEJ1dHRvbjsKKwogICAg IHZvaWQgc2xvdG9rYXlQdXNoQnV0dG9uUHJlc3NlZCgpOwotLy8gICAgUVB1c2hCdXR0b24qIGNh bmNlbFB1c2hCdXR0b247CisgICAgLy8gICAgUVB1c2hCdXR0b24qIGNhbmNlbFB1c2hCdXR0b247 CiAgICAgdm9pZCBzbG90Y2FuY2VsUHVzaEJ1dHRvblByZXNzZWQoKTsKLS8vICAgIFFQdXNoQnV0 dG9uKiBoZWxwX1B1c2hCdXR0b247CisgICAgLy8gICAgUVB1c2hCdXR0b24qIGhlbHBfUHVzaEJ1 dHRvbjsKICAgICB2b2lkIHNsb3RoZWxwX1B1c2hCdXR0b25QcmVzc2VkKCk7Ci0vLyAgICBRUHVz aEJ1dHRvbiogY3JlYXRlU3JjQXJjaFB1c2hCdXR0b247CisgICAgLy8gICAgUVB1c2hCdXR0b24q IGNyZWF0ZVNyY0FyY2hQdXNoQnV0dG9uOwogICAgIHZvaWQgc2xvdGNyZWF0ZVNyY0FyY2hQdXNo QnV0dG9uUHJlc3NlZCgpOwotLy8gICAgUVB1c2hCdXR0b24qIHJlc2V0U3JjUHVzaEJ1dHRvbjsK KyAgICAvLyAgICBRUHVzaEJ1dHRvbiogcmVzZXRTcmNQdXNoQnV0dG9uOwogICAgIHZvaWQgc2xv dHJlc2V0U3JjUHVzaEJ1dHRvblByZXNzZWQoKTsKLS8vICAgIFFQdXNoQnV0dG9uKiBidWlsZEFs bFB1c2hCdXR0b247CisgICAgLy8gICAgUVB1c2hCdXR0b24qIGJ1aWxkQWxsUHVzaEJ1dHRvbjsK ICAgICB2b2lkIHNsb3RidWlsZEFsbFB1c2hCdXR0b25QcmVzc2VkKCk7Ci0vLyAgICBRUHVzaEJ1 dHRvbiogZXhwb3J0U1BFQ1B1c2hCdXR0b247CisgICAgLy8gICAgUVB1c2hCdXR0b24qIGV4cG9y dFNQRUNQdXNoQnV0dG9uOwogICAgIHZvaWQgc2xvdGV4cG9ydFNQRUNQdXNoQnV0dG9uUHJlc3Nl ZCgpOwotLy8gICAgUVB1c2hCdXR0b24qIGltcG9ydFNQRUNQdXNoQnV0dG9uOworICAgIC8vICAg IFFQdXNoQnV0dG9uKiBpbXBvcnRTUEVDUHVzaEJ1dHRvbjsKICAgICB2b2lkIHNsb3RpbXBvcnRQ dXNoQnV0dG9uUHJlc3NlZCgpOwotLy8gICAgUVB1c2hCdXR0b24qIHNyY1BhY2thZ2VQdXNoQnV0 dG9uOworICAgIC8vICAgIFFQdXNoQnV0dG9uKiBzcmNQYWNrYWdlUHVzaEJ1dHRvbjsKICAgICB2 b2lkIHNsb3RzcmNQYWNrYWdlUHVzaEJ1dHRvblByZXNzZWQoKTsKLS8vICAgIFFQdXNoQnV0dG9u KiBnZW5IVE1MUHVzaEJ1dHRvbjsKKyAgICAvLyAgICBRUHVzaEJ1dHRvbiogZ2VuSFRNTFB1c2hC dXR0b247CiAgICAgdm9pZCBzbG90Z2VuSFRNTFB1c2hCdXR0b25QcmVzc2VkKCk7Ci0vLyAgICBR UHVzaEJ1dHRvbiogcmVzZXRIVE1MUHVzaEJ1dHRvbjsKKyAgICAvLyAgICBRUHVzaEJ1dHRvbiog cmVzZXRIVE1MUHVzaEJ1dHRvbjsKICAgICB2b2lkIHNsb3RyZXNldEhUTUxQdXNoQnV0dG9uUHJl c3NlZCgpOwotLy8gICAgUVRvb2xCdXR0b24qIHVwbG9hZEFkZEZpbGVUb29sQnV0dG9uOworICAg IC8vICAgIFFUb29sQnV0dG9uKiB1cGxvYWRBZGRGaWxlVG9vbEJ1dHRvbjsKICAgICB2b2lkIHNs b3R1cGxvYWRBZGRGaWxlVG9vbEJ1dHRvblByZXNzZWQoKTsKLS8vICAgIFFUb29sQnV0dG9uKiB1 cGxvYWRSZW1vdmVUb29sQnV0dG9uOworICAgIC8vICAgIFFUb29sQnV0dG9uKiB1cGxvYWRSZW1v dmVUb29sQnV0dG9uOwogICAgIHZvaWQgc2xvdHVwbG9hZFJlbW92ZVRvb2xCdXR0b25QcmVzc2Vk KCk7Ci0vLyAgICBRUHVzaEJ1dHRvbiogdXBsb2FkU3VibWl0UHVzaEJ1dHRvbjsKKyAgICAvLyAg ICBRUHVzaEJ1dHRvbiogdXBsb2FkU3VibWl0UHVzaEJ1dHRvbjsKICAgICB2b2lkIHNsb3R1cGxv YWRTdWJtaXRQdXNoQnV0dG9uUHJlc3NlZCgpOwotLy8gICAgUVB1c2hCdXR0b24qIHVwbG9hZFJl c2V0UHVzaEJ1dHRvbjsKKyAgICAvLyAgICBRUHVzaEJ1dHRvbiogdXBsb2FkUmVzZXRQdXNoQnV0 dG9uOwogICAgIHZvaWQgc2xvdHVwbG9hZFJlc2V0UHVzaEJ1dHRvblByZXNzZWQoKTsKIAotLy8g Q29ubmVjdCBTbG90cyB0byB0aGUgZm9sbG93aW5nIHdpZGdldHMgYW5kIGFkZAotLy8gYWNjZXNz b3JzIGFuZCBtdXRhdG9ycwotLy8gICAgUUNoZWNrQm94KiBjdXN0b21Qcm9qZWN0Q2hlY2tCb3g7 CisgICAgLy8gQ29ubmVjdCBTbG90cyB0byB0aGUgZm9sbG93aW5nIHdpZGdldHMgYW5kIGFkZAor ICAgIC8vIGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMKKyAgICAvLyAgICBRQ2hlY2tCb3gqIGN1c3Rv bVByb2plY3RDaGVja0JveDsKICAgICB2b2lkIHNsb3RjdXN0b21Qcm9qZWN0Q2hlY2tCb3hDaGFu Z2VkKCk7Ci0vLyAgUUNoZWNrQm94KiB1cGxvYWRDdXN0b21DaGVja0JveDsKKyAgICAvLyAgUUNo ZWNrQm94KiB1cGxvYWRDdXN0b21DaGVja0JveDsKICAgICB2b2lkIHNsb3R1cGxvYWRDdXN0b21D aGVja0JveENoYW5nZWQoKTsKIAogcHVibGljOgpAQCAtOTMsODMgKzk2LDkyIEBACiAgICAgYm9v bCBnZXR1cGxvYWRDdXN0b21DaGVja0JveFN0YXRlKCk7CiAgICAgdm9pZCBzZXR1cGxvYWRDdXN0 b21DaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpOwogCi0vLyBBZGQgYWNjZXNzb3JzIGFuZCBtdXRh dG9ycyBmb3IgdGhlIGZvbGxvd2luZworICAgIC8vIEFkZCBhY2Nlc3NvcnMgYW5kIG11dGF0b3Jz IGZvciB0aGUgZm9sbG93aW5nCiAKLS8vICAgUUNoZWNrQm94KiBiemlwQ2hlY2tCb3g7CisgICAg Ly8gICBRQ2hlY2tCb3gqIGJ6aXBDaGVja0JveDsKICAgICBib29sIGdldGJ6aXBDaGVja0JveFN0 YXRlKCk7CiAgICAgdm9pZCBzZXRiemlwQ2hlY2tCb3hTdGF0ZShib29sIHN0YXRlKTsKLS8vICAg IFFDaGVja0JveCogYXBwSWNvbkNoZWNrQm94OworICAgIC8vICAgIFFDaGVja0JveCogYXBwSWNv bkNoZWNrQm94OwogICAgIGJvb2wgZ2V0YXBwSWNvbkNoZWNrQm94U3RhdGUoKTsKICAgICB2b2lk IHNldGFwcEljb25DaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpOwotLy8gICAgUUNoZWNrQm94KiBn ZW5IVE1MQ2hlY2tCb3g7CisgICAgLy8gICAgUUNoZWNrQm94KiBnZW5IVE1MQ2hlY2tCb3g7CiAg ICAgYm9vbCBnZXRnZW5IVE1MQ2hlY2tCb3hTdGF0ZSgpOwogICAgIHZvaWQgc2V0Z2VuSFRNTENo ZWNrQm94U3RhdGUoYm9vbCBzdGF0ZSk7Ci0vLyAgICBRQ2hlY2tCb3gqIHVzZVJQTUluZm9DaGVj a0JveDsKKyAgICAvLyAgICBRQ2hlY2tCb3gqIHVzZVJQTUluZm9DaGVja0JveDsKICAgICBib29s IGdldHVzZVJQTUluZm9DaGVja0JveFN0YXRlKCk7CiAgICAgdm9pZCBzZXR1c2VSUE1JbmZvQ2hl Y2tCb3hTdGF0ZShib29sIHN0YXRlKTsKLS8vICAgIFFDaGVja0JveCogdXBsb2FkQXBwc0tERWNv bUNoZWNrQm94OworICAgIC8vICAgIFFDaGVja0JveCogdXBsb2FkQXBwc0tERWNvbUNoZWNrQm94 OwogICAgIGJvb2wgZ2V0dXBsb2FkQXBwc0tERWNvbUNoZWNrQm94U3RhdGUoKTsKICAgICB2b2lk IHNldHVwbG9hZEFwcHNLREVjb21DaGVja0JveFN0YXRlKGJvb2wgc3RhdGUpOwotLy8gICAgUUNo ZWNrQm94KiB1cGxvYWRmdHBrZGVvcmdDaGVja0JveDsKKyAgICAvLyAgICBRQ2hlY2tCb3gqIHVw bG9hZGZ0cGtkZW9yZ0NoZWNrQm94OwogICAgIGJvb2wgZ2V0dXBsb2FkZnRwa2Rlb3JnQ2hlY2tC b3hTdGF0ZSgpOwogICAgIHZvaWQgc2V0dXBsb2FkZnRwa2Rlb3JnQ2hlY2tCb3hTdGF0ZShib29s IHN0YXRlKTsKLS8vICAgIFFDaGVja0JveCogZGV2UGFja2FnZUNoZWNrQm94OworICAgIC8vICAg IFFDaGVja0JveCogZGV2UGFja2FnZUNoZWNrQm94OwogICAgIGJvb2wgZ2V0ZGV2UGFja2FnZUNo ZWNrQm94U3RhdGUoKTsKICAgICB2b2lkIHNldGRldlBhY2thZ2VDaGVja0JveFN0YXRlKGJvb2wg c3RhdGUpOwotLy8gICAgUUNoZWNrQm94KiBkb2NzUGFja2FnZUNoZWNrQm94OworICAgIC8vICAg IFFDaGVja0JveCogZG9jc1BhY2thZ2VDaGVja0JveDsKICAgICBib29sIGdldGRvY3NQYWNrYWdl Q2hlY2tCb3hTdGF0ZSgpOwogICAgIHZvaWQgc2V0ZG9jc1BhY2thZ2VDaGVja0JveFN0YXRlKGJv b2wgc3RhdGUpOwotLy8gICAgUVByb2dyZXNzQmFyKiB1cGxvYWRQcm9ncmVzc0JhcjsKKyAgICAv LyAgICBRUHJvZ3Jlc3NCYXIqIHVwbG9hZFByb2dyZXNzQmFyOwogICAgIGludCBnZXR1cGxvYWRQ cm9ncmVzc0JhclByb2dyZXNzKCk7CiAgICAgdm9pZCBzZXR1cGxvYWRQcm9ncmVzc0JhclByb2dy ZXNzKGludCBwcm9ncmVzcyk7Ci0vLyAgICBRTGluZUVkaXQqIGFyY2hOYW1lRm9ybWF0TGluZUVk aXQ7CisgICAgLy8gICAgUUxpbmVFZGl0KiBhcmNoTmFtZUZvcm1hdExpbmVFZGl0OwogICAgIFFT dHJpbmcgZ2V0YXJjaE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoKTsKICAgICB2b2lkIHNldGFyY2hO YW1lRm9ybWF0TGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCk7Ci0vLyAgICBRTGluZUVkaXQqIGFw cE5hbWVMaW5lRWRpdDsKKyAgICAvLyAgICBRTGluZUVkaXQqIGFwcE5hbWVMaW5lRWRpdDsKICAg ICBRU3RyaW5nIGdldGFwcE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoKTsKICAgICB2b2lkIHNldGFw cE5hbWVGb3JtYXRMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KTsKLS8vICAgIFFMaW5lRWRpdCog c3VtbWFyeUxpbmVFZGl0OworICAgIC8vICAgIFFMaW5lRWRpdCogc3VtbWFyeUxpbmVFZGl0Owog ICAgIFFTdHJpbmcgZ2V0c3VtbWFyeUxpbmVFZGl0VGV4dCgpOwogICAgIHZvaWQgc2V0c3VtbWFy eUxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpOwotLy8gICAgUUxpbmVFZGl0KiBhdXRob3JMaW5l RWRpdDsKKyAgICAvLyAgICBRTGluZUVkaXQqIGF1dGhvckxpbmVFZGl0OwogICAgIFFTdHJpbmcg Z2V0YXV0aG9yTGluZUVkaXRUZXh0KCk7CiAgICAgdm9pZCBzZXRhdXRob3JMaW5lRWRpdFRleHQo UVN0cmluZyB0ZXh0KTsKLS8vICAgIFFMaW5lRWRpdCogZ3JvdXBMaW5lRWRpdDsKKyAgICAvLyAg ICBRTGluZUVkaXQqIGdyb3VwTGluZUVkaXQ7CiAgICAgUVN0cmluZyBnZXRncm91cExpbmVFZGl0 VGV4dCgpOwogICAgIHZvaWQgc2V0Z3JvdXBMaW5lRWRpdFRleHQoUVN0cmluZyB0ZXh0KTsKLS8v ICAgIFFMaW5lRWRpdCogcmVsZWFzZUxpbmVFZGl0OworICAgIC8vICAgIFFMaW5lRWRpdCogcmVs ZWFzZUxpbmVFZGl0OwogICAgIFFTdHJpbmcgZ2V0cmVsZWFzZUxpbmVFZGl0VGV4dCgpOwogICAg IHZvaWQgc2V0cmVsZWFzZUxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQpOwotLy8gICAgUUxpbmVF ZGl0KiBWZXJzaW9uTGluZUVkaXQ7CisgICAgLy8gICAgUUxpbmVFZGl0KiBWZXJzaW9uTGluZUVk aXQ7CiAgICAgUVN0cmluZyBnZXR2ZXJzaW9uTGluZUVkaXRUZXh0KCk7CiAgICAgdm9pZCBzZXR2 ZXJzaW9uTGluZUVkaXRUZXh0KFFTdHJpbmcgdGV4dCk7Ci0vLyAgICBRTGluZUVkaXQqIFZlbmRv ckxpbmVFZGl0OworICAgIC8vICAgIFFMaW5lRWRpdCogVmVuZG9yTGluZUVkaXQ7CiAgICAgUVN0 cmluZyBnZXR2ZW5kb3JMaW5lRWRpdFRleHQoKTsKICAgICB2b2lkIHNldHZlbmRvckxpbmVFZGl0 VGV4dChRU3RyaW5nIHRleHQpOwotLy8gICAgUUxpbmVFZGl0KiBMaWNlbnNlTGluZUVkaXQ7Cisg ICAgLy8gICAgUUxpbmVFZGl0KiBMaWNlbnNlTGluZUVkaXQ7CiAgICAgUVN0cmluZyBnZXRsaWNl bnNlTGluZUVkaXRUZXh0KCk7CiAgICAgdm9pZCBzZXRsaWNlbnNlTGluZUVkaXRUZXh0KFFTdHJp bmcgdGV4dCk7Ci0vLyAgICBRTGluZUVkaXQqIHVwbG9hZFVSTExpbmVFZGl0OworICAgIC8vICAg IFFMaW5lRWRpdCogdXBsb2FkVVJMTGluZUVkaXQ7CiAgICAgUVN0cmluZyBnZXR1cGxvYWRVUkxM aW5lRWRpdFRleHQoKTsKICAgICB2b2lkIHNldHVwbG9hZFVSTExpbmVFZGl0VGV4dChRU3RyaW5n IHRleHQpOwotLy8gICAgUUxpbmVFZGl0KiBQYWNrYWdlckxpbmVFZGl0OworICAgIC8vICAgIFFM aW5lRWRpdCogUGFja2FnZXJMaW5lRWRpdDsKICAgICBRU3RyaW5nIGdldHBhY2thZ2VyTGluZUVk aXRUZXh0KCk7CiAgICAgdm9pZCBzZXRwYWNrYWdlckxpbmVFZGl0VGV4dChRU3RyaW5nIHRleHQp OwotLy8gICAgUUNvbWJvQm94KiBhcmNoQ29tYm9Cb3g7CisgICAgLy8gICAgUUNvbWJvQm94KiBh cmNoQ29tYm9Cb3g7CiAgICAgUVN0cmluZyBnZXRhcmNoQ29tYm9Cb3hUZXh0KCk7CiAgICAgaW50 IGdldGFyY2hDb21ib0JveEl0ZW0oKTsKICAgICB2b2lkIHNldGFyY2hDb21ib0JveEl0ZW0oaW50 IGl0ZW0pOwotLy8gICAgUUxpc3RCb3gqIHVwbG9hZEZpbGVMaXN0Qm94OworICAgIC8vICAgIFFM aXN0Qm94KiB1cGxvYWRGaWxlTGlzdEJveDsKICAgICBRU3RyaW5nIGdldHVwbG9hZEZpbGVMaXN0 Qm94VGV4dCgpOwogICAgIGludCBnZXR1cGxvYWRGaWxlTGlzdEJveEl0ZW0oKTsKICAgICB2b2lk IHNldHVwbG9hZEZpbGVMaXN0Qm94SXRlbShpbnQgaXRlbSk7Ci0vLyAgICBRTGlzdEJveCogc3Jj RGlzdEZpbGVMaXN0Qm94OworICAgIC8vICAgIFFMaXN0Qm94KiBzcmNEaXN0RmlsZUxpc3RCb3g7 CiAgICAgUVN0cmluZyBnZXRzcmNEaXN0RmlsZUxpc3RCb3hUZXh0KCk7CiAgICAgaW50IGdldHNy Y0Rpc3RGaWxlTGlzdEJveEl0ZW0oKTsKICAgICB2b2lkIHNldHNyY0Rpc3RGaWxlTGlzdEJveEl0 ZW0oaW50IGl0ZW0pOwotLy8gICAgUU11bHRpTGluZUVkaXQqIHByb2plY3REZXNjcmlwdGlvbk11 bHRpbGluZUVkaXQ7CisgICAgLy8gICAgUU11bHRpTGluZUVkaXQqIHByb2plY3REZXNjcmlwdGlv bk11bHRpbGluZUVkaXQ7CiAgICAgUVN0cmluZyBnZXRwcm9qZWN0RGVzY3JpcHRpb25NdWx0aWxp bmVFZGl0VGV4dCgpOwogICAgIHZvaWQgc2V0cHJvamVjdERlc2NyaXB0aW9uTXVsdGlsaW5lRWRp dFRleHQoUVN0cmluZyB0ZXh0KTsKKworCitwcml2YXRlOgorICAgIHZvaWQgbG9hZFNldHRpbmdz KCk7CisgICAgdm9pZCBzdG9yZVNldHRpbmdzKCk7CisgICAgRGlzdHBhcnRQYXJ0ICogbV9wYXJ0 OworICAgIFFVcmxPcGVyYXRvciAqIG9wOworICAgIFFTdHJpbmcgZGlyOworICAgIEtQcm9jZXNz ICp0YXJfcHJvYzsKIH07CiAKIAo= --Multipart_Thu__12_Sep_2002_19:02:54_+0200_08688910-- _______________________________________________ Kdevelop-devel mailing list Kdevelop-devel@barney.cs.uni-potsdam.de http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel